2014-02-19 50 views
0

XML處理具有相同的名稱,但在XSLT不同的屬性值的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> 

我在使用循環獲取不同行的價值觀的問題,我得到所有行中第一行的值。我試圖從XML中獲取所有行的值。任何人都可以幫助我。 在此先感謝:)

+0

我想你必須提供源XML。使用4個或更多空格縮進來保持XML格式。 – user3159253

回答

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> 

注意,沒有柱[@ NAME = '標題']在您輸入的例子。

+0

它工作。非常感謝! – user3328633

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"> 
+0

它工作。非常感謝! – user3328633