我们正在改变这种XML数据转换成使用XSL管道分隔格式...如何在不使用元素名称硬编码的情况下使用XSL迭代XML数据?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<LIBRARY>
<BOOK>
<TITLE>Professional JINI</TITLE>
<AUTHOR>Sing Li</AUTHOR>
<PUBLISHER>Wrox Publications</PUBLISHER>
</BOOK>
</LIBRARY>
。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<!-- New line character variable -->
<xsl:variable name="newline">
<xsl:text> </xsl:text>
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="LIBRARY/BOOK">
<xsl:value-of select="TITLE"/>|<xsl:value-of select="AUTHOR"/>|<xsl:value-of select="PUBLISHER"/>
<xsl:value-of select="$newline"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这是输出...
Professional JINI|Sing Li|Wrox Publications
有没有办法让标题,作者,etc..from的值,而不硬编码在XSL元素名称:value-of的?我们希望这个XSL是通用的,这样如果我们稍后添加更多书籍属性,样式表将自动捕获这些新的字段。
我所要的输出是一样的,但我不想硬编码在XSL元素名:价值的,我想成为更通用的支持任意数量的书元素。 – raffian
我试过了,正确的值被提取出来了,但是输出格式混乱了,它不在一行中;它实际上类似于源Xml;看起来白色空间正从源头拉进来;我怎样才能防止呢? – raffian
我想出了, | xsl:for-each>,thx –
raffian