写了个XSLT小示范,仅希望能给初学者一点参考价值。实例仅为了更多的应用到XSLT的各个元素去表现功能而并非最佳实践。在读这篇文章之前你应该就关于XSLT的基础概念有一些基本了解以及对XPath有比较熟练的掌握,因为XSLT是基于XPath去匹配需要应用的模板以及定位节点等。这篇文章不再赘述,
在这篇实例中主要应用了以下一些常用的XSLT元素,如:<xsl:stylesheet>,<xsl:apply-templates>,<xsl:attribute>,<xsl:attribute-set>,<xsl:choose>,<xsl:comment>,<xsl:copy>,<xsl:element>,<xsl:for-each>,<xsl:if>,<xsl:otherwise>,<xsl:output>,<xsl:sort>,<xsl:template>,<xsl:text>,<xsl:value-of>,<xsl:variable>,<xsl:when>等元素以及显示怎样显示HTML空格( )使用自定义函数等都有涉及。
直接进入主题吧,首先看一下最直观的显示输出吧,如下图:
这里是原始的XML文件内容(message.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 rel. 2 sp2 () by Administrator -->
<?xml-stylesheet type="text/xsl" href="https://www.linuxidc.com/messages.xsl"?>
<messages>
<message>
<sender>gukaitong@gmail.com</sender>
<to>anonymous@gmail.com
<group>
<address>111@gmail.com</address>
<address>222@gmail.com</address>
<address>aaa@gmail.com</address>
<address>bbb@gmail.com</address>
<address>ccc@gmail.com</address>
</group>
</to>
<subject>This is a sample</subject>
<datetime date="2008-12-11" time="12:00:00" formatted="12/11/2008 12:00AM">2008-12-11T12:00:00Z</datetime>
<body>
Are you interested in?
<attachments>
<attachment>
<message>
<sender>anonymous@gmail.com</sender>
<to>gukaitong@gmail.com</to>
<body>
We strongly recommend the following books
<books xmlns:amazon="http://www.amazon.com/books/schema">
<amazon:book>
<name>Professional C# 2008 </name>
<country>USA</country>
<price>37.79</price>
<year>2007</year>
</amazon:book>
<amazon:book>
<name>Microsoft Visual C# 2008 Step by Step </name>
<country>USA</country>
<price>26.39 </price>
<year>2008</year>
</amazon:book>
<amazon:book>
<name>C# in Depth</name>
<country>USA</country>
<price>29.69 </price>
<year>2006</year>
</amazon:book>
<amazon:book>
<name>Thinking in Java</name>
<country>USA</country>
<price>23.69 </price>
<year>2004</year>
</amazon:book>
</books>
</body>
</message>
</attachment>
</attachments>
</body>
</message>
<message>
<sender>333@gmail.com</sender>
<to>444@gmail.com</to>
<subject>No title</subject>
<body/>
</message>
</messages>
这就是XSLT文件(message.xsl):