XML
<?xml version='1.0' encoding='UTF-8' ?>
<?xml-stylesheet type="text/xsl" href="Sampletest.xsl"?>
<RESULTS>
<ROW>
<COLUMN NAME="System_Id">Saranya</COLUMN>
<COLUMN NAME="Case_ID">1234</COLUMN>
<COLUMN NAME="Case_Submitter_ID">samandav</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="System_Id">Gayathri</COLUMN>
<COLUMN NAME="Case_ID">5678</COLUMN>
<COLUMN NAME="Case_Submitter_ID">garaghur</COLUMN>
</ROW>
</RESULTS>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:for-each select="//ROW">
<businessobject>
<fulltext>
<title><xsl:value-of select="//COLUMN[@NAME='Title']"/></title>
<id><xsl:value-of select="//COLUMN[@NAME='Case_ID']"/></id>
<nccode><xsl:value-of select="//COLUMN[@NAME='System_Id']"/></nccode>
</fulltext>
</businessobject>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我在使用 for 循环获取不同行的值时遇到了问题,我在所有行中获取第一行的值。我正在尝试从 XML 中获取所有行的值。谁能帮我解决这个问题。提前致谢:)
试试这个方式:
<xsl:template match="/">
<xsl:for-each select="RESULTS/ROW">
<businessobject>
<fulltext>
<title><xsl:value-of select="COLUMN[@NAME='Title']"/></title>
<id><xsl:value-of select="COLUMN[@NAME='Case_ID']"/></id>
<nccode><xsl:value-of select="COLUMN[@NAME='System_Id']"/></nccode>
</fulltext>
</businessobject>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
请注意,输入示例中没有列[@NAME='标题']。
在XPath中使用//
意味着:通过完整的文件搜索所有这些元素。如果可以,您应该始终使用 /
.
改变:
<xsl:value-of select="//COLUMN[@NAME='Title']"/>
自:
<xsl:value-of select="COLUMN[@NAME='Title']"/>
你甚至可以改变更多,去更多的相对:
改变:
<xsl:for-each select="//ROW">
自:
<xsl:for-each select="RESULTS/ROW">