根据所有匹配的内容xsl获取值

时间:2015-10-27 11:03:42

标签: java xml xslt xslt-1.0 xslt-2.0

我有以下xml:

        <main>
          <text>
           <naresh:parentText>
             <naresh:text type="anotheroption"></naresh:text>   
             <naresh:text type="MyCustom1"></naresh:text>
             <naresh:text type="MyCustom2"></naresh:text>
             <naresh:text type="MyCustom3"></naresh:text>
             <naresh:text type="MyCustom4"></naresh:text>
           </ns1:parentText>
        </text>

     </main>

我正在尝试使用xslt以下显示数据,但没有运气:

       <xsl:for-each select="main/text/naresh:parentText/naresh:text[starts-with(@type, 'MyCustom')]">  
          <xsl:call-template name="myTemplate"></xsl:call-template>
       </xsl:for-each>

      <xsl:template name = "myTemplate">    

        <xsl:value-of select="."  disable-output-escaping="yes"   />

     </xsl:template> 

请帮帮我吗?

谢谢, 纳雷什。

1 个答案:

答案 0 :(得分:0)

试试这个,

XML:

<Text xmlns:naresh="www.my.web">
<naresh:parentText>
    <naresh:text type="anotheroption"></naresh:text>
    <naresh:text type="MyCustom1"></naresh:text>
    <naresh:text type="MyCustom2"></naresh:text>
    <naresh:text type="MyCustom3"></naresh:text>
    <naresh:text type="MyCustom4"></naresh:text>
</naresh:parentText>
</Text>

XSLT:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:naresh="www.my.web">

<xsl:template match="Text">
    <xsl:for-each select="descendant::*[starts-with(@type, 'MyCustom')]">    
        <xsl:call-template name="myTemplate"></xsl:call-template>
    </xsl:for-each>
</xsl:template>
<xsl:template name = "myTemplate">
    <xsl:text>&#10;</xsl:text><xsl:value-of select="@type" disable-output-escaping="yes"/>
</xsl:template> 
</xsl:stylesheet>

结果:

<?xml version="1.0" encoding="UTF-8"?>
MyCustom1
MyCustom2
MyCustom3
MyCustom4

注意:发布时,请放置简单完整的XSLT代码,包括样式表标题或root和所需结果。