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中获取所有行的值。任何人都可以帮助我。 在此先感谢:)
答案 0 :(得分:2)
以这种方式尝试:
<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>
请注意,输入示例中没有COLUMN [@ NAME ='Title']。
答案 1 :(得分:0)
在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">