假设您要转换此XML
<?xml version="1.0" encoding="UTF-8"?>
<package id="album">
<concept id="tracknumber" value="18"></concept>
<concept id="songtitle" value="Multi Love"></concept>
<concept id="band" value="Unknown Mortal Orchestra"></concept>
</package>
进入这个XML:
<package>
<tracknumber>18</tracknumber>
<songtitle>Multi Love</songtitle>
<band>Unknown Mortal Orchestra</band>
</package>
这是转换源XML的起点XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="package[@id='album']">
<package>
<tracknumber>
<xsl:value-of select="concept[@id='tracknumber']" />
</tracknumber>
<songtitle>
<xsl:value-of select="concept[@id='songtitle']" />
</songtitle>
<band>
<xsl:value-of select="concept[@id='band']" />
</band>
</package>
</xsl:template>
</xsl:stylesheet>
获取XML属性的“值”部分似乎很棘手。
答案 0 :(得分:1)
如果XML包含许多<concept>
标记,请考虑没有显式值标准的动态XSLT解决方案:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="package[@id='album']">
<xsl:copy>
<xsl:apply-templates select="concept" />
</xsl:copy>
</xsl:template>
<xsl:template match="concept">
<xsl:element name="{@id}">
<xsl:value-of select="@value" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
这将是要使用的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="package[@id='album']">
<package>
<tracknumber>
<xsl:value-of select="concept[@id='tracknumber']/@value />
</tracknumber>
<songtitle>
<xsl:value-of select="concept[@id='songtitle']/@value" />
</songtitle>
<band>
<xsl:value-of select="concept[@id='band']/@value" />
</band>
</package>
</xsl:template>
</xsl:stylesheet>