XSLT最重要的用途:将XML从一种标准转换到另一种标准,包括重命名元素/属性、删除元素/属性、改变数据类型、改变节点层次结构、把元素表示为属性或把属性表示为元素等。
ConvertLegacyToNewStandard.xslt文件内容:
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="FilmOrder">
<!-- rename <FilmOrder> to <DvdOrder>-->
<xsl:element name="DvdOrder">
<!--Make element 'quantity' attribute HowMuch Notice attribute
HowMuch comes before attriute FilmOrderNumber-->
<xsl:attribute name="HowMuch">
<xsl:value-of select="quantity"></xsl:value-of>
</xsl:attribute>
<!-- Make element filmId attribute FilmOrderNumber-->
<xsl:attribute name="FilmOrderNumber">
<xsl:value-of select="filmId"></xsl:value-of>
</xsl:attribute>
</xsl:element>
<!-- end of DvdOrder element-->
</xsl:template>
</xsl:stylesheet>
MovieOrdersOriginal.xml文件内容:
<?xml version="1.0" encoding="gb2312"?>
<FilmOrderList>
<FilmOrder id="101">
<title>It</title>
<Quantity>10</Quantity>
</FilmOrder>
<FilmOrder id="102">
<title>can</title>
<Quantity>10</Quantity>
</FilmOrder>
<FilmOrder id="103">
<title>not</title>
<Quantity>10</Quantity>
</FilmOrder>
<FilmOrder id="104">
<title>display</title>
<Quantity>10</Quantity>
</FilmOrder>
<FilmOrder id="105">
<title>chinese</title>
<Quantity>10</Quantity>
</FilmOrder>
</FilmOrderList>
控制台代码:
Imports System.Xml.Xsl
Module Module1
Sub Main()
Dim strDeroctory As String = _"..."
Dim myXslCompiledTransform As New XslCompiledTransform
myXslCompiledTransform.Load(strDeroctory & "\ConvertLegacyToNewStandard.xslt")
myXslCompiledTransform.Transform(strDeroctory & "\MovieOrdersOriginal.xml", strDeroctory & "\MovieOrdersModified.xml")
End Sub
End Module
转换后的文件MovieOrdersModified.xml:
<?xml version="1.0" encoding="utf-8"?>
<DvdOrder 多少="" FilmOrderNumber="" />
<DvdOrder 多少="" FilmOrderNumber="" />
<DvdOrder 多少="" FilmOrderNumber="" />
<DvdOrder 多少="" FilmOrderNumber="" />
<DvdOrder 多少="" FilmOrderNumber="" />