我已经按照MSDN文档逐字记录
here无效.
我的XML的一个例子:
<Ticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <LogNo>454564</LogNo> <CaseNumber> <Part1>FGV</Part1> <Part2>9999</Part2> <Part3>88888888 </Part3> </CaseNumber> </Ticket>
我的XSLT的一个例子:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*" /> <xsl:template match="/text"> <xsl:value-of select='normalize-space()'/> </xsl:template> <xsl:template match="Ticket"> <Ticket><xsl:attribute name="LogNumber"><xsl:value-of select="LogNo"/></xsl:attribute> <CaseNumber><xsl:value-of select="CaseNumber/Part1"/>-<xsl:value-of select="CaseNumber/Part2"/>-<xsl:value-of select="CaseNumber/Part3"/></CaseNumber> </Ticket> </xsl:template> </xsl:stylesheet>
我的输出XML:
<?xml version="1.0" encoding="IBM437"?> <Tickets> <Ticket LogNumber="454564"> <CaseNumber>FGV-9999-88888888 </CaseNumber> </Ticket> </Tickets>
我在用
<xsl:template match="/text"> <xsl:value-of select='normalize-space()'/> </xsl:template>
更改< xsl:template match =“/ text”>
to:xsl:template match =“text()”>
to:xsl:template match =“text()”>
并使用xsl:apply-templates而不是xsl:value-of.
因此尝试:
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*" /> <xsl:template match="text()"> <xsl:value-of select='normalize-space()'/> </xsl:template> <xsl:template match="Ticket"> <Ticket> <xsl:attribute name="LogNumber"> <xsl:value-of select="LogNo"/> </xsl:attribute> <CaseNumber> <xsl:apply-templates select="CaseNumber/Part1"/>-<xsl:apply-templates select="CaseNumber/Part2"/>-<xsl:apply-templates select="CaseNumber/Part3"/> </CaseNumber> </Ticket> </xsl:template> </xsl:stylesheet>
<Ticket LogNumber="454564"><CaseNumber>FGV-9999-88888888</CaseNumber></Ticket>