选择由Xslt以某些文本开头的Distinct XML属性

时间:2015-12-30 04:54:38

标签: xslt

我有一个Xml,它有多个属性,有些属性以一些常见文本开头。

<root name="Measures" >
    <Member name="MAF94">
        <Member name="MAF95">
            <Member name="MAM1" />
            <Member name="MAM2" />
        </Member>
        <Member name="MAF96">
            <Member name="MAF97">
                <Member name="MAM254" />
                <Member name="MAF98">
                    <Member name="MAM73" />
                    <Member name="MAM74" />
                    <Member name="MAF99">
                        <Member name="MAM11" />
                        <Member name="MAM10" />
                    </Member>
                    <Member name="MAF100">
                        <Member name="MAM18" />
                        <Member name="MAM15" />
                    </Member>
                </Member>
            </Member>
        </Member>
        <Member name="MAF352">
            <Member name="MAM1814" />
            <Member name="MAM1815" />
        </Member>
    </Member>
</root>

如何获取与某些文本匹配的不同属性。 在上面的例子中,我想只选择以“MAM”字母开头的属性。

由于

1 个答案:

答案 0 :(得分:0)

怎么样......

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
<xsl:output encoding="utf-8" indent="yes" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />

<xsl:template match="@*|text()|comment()|processing-instruction()|*" />

<xsl:template match="/*">
  <xsl:copy>
    <xsl:apply-templates select="//Member[substring(@name,0,3)='MAM']" />
  </xsl:copy>
</xsl:template>

<xsl:template match="Member">
  <xsl:copy>
    <xsl:copy-of select="@*" />
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>