如何使用 for 循环在 XSLT 中处理名称相同但属性值不同的 XML 标记



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

相关内容

  • 没有找到相关文章

最新更新