我对xml和xslt的世界比较陌生。我想要做的是使用xslt返回xml文件中生成的所有错误消息,每个父项下都有许多错误消息。
这是XML文件的示例:
<progress_file>
<read_leg>
<info>Successfully read face ID 225</info>
<info>successfully read face ID 226</info>
<error>unable to read face ID 227</error>
<error>unable to read face ID 228</error>
</read_leg>
<write_leg>
<info>Successfully created face ID 225</info>
<info>successfully created face ID 226</info>
<error>unable to write face ID 227</error>
<error>unable to write face ID 228</error>
</write_leg>
</progress_file>
使用的XSLT是:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="progress_file/read_leg">
<xsl:value-of select="error"/>
</xsl:for-each>
<xsl:for-each select="progress_file/write_leg">
<xsl:value-of select="error"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出仅返回每个区域的第一个值。我认为这就是逻辑的含义,即“对于每个写脚,返回错误消息”,但这并不意味着它会检查是否存在多种情况。
我还没有看到具有相同名称的多个属性的任何地方,也没有遇到可以使用此属性的XSL元素,所以我有些困惑。关于这怎么可能的任何建议?
还有一个问题,是否可能在输出线之间出现断线?
谢谢。
这是一个选择:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="utf-8"/>
<!-- The XML entity for a line feed -->
<xsl:variable name="linefeed" select="' '"/>
<!-- Match the root node -->
<xsl:template match="/">
<!-- Apply templates for all <error> nodes. -->
<xsl:apply-templates select="progress_file/read_leg/error | progress_file/write_leg/error"/>
</xsl:template>
<xsl:template match="error">
<!-- Concatenate the value of the current node and a line feed. -->
<xsl:value-of select="concat(., $linefeed)"/>
</xsl:template>
</xsl:stylesheet>
unable to read face ID 227
unable to read face ID 228
unable to write face ID 227
unable to write face ID 228
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句