2

这是我的文件:

例子.xml

 <?xml version="1.0" encoding="UTF-8"?>
    <bsp>
<numbers>
       <string>one</string>
       <string>two</string>
       <string>three</string>
       <string>one</string>
       <string>two</string>
       <string>four</string>
       <string>fife</string>
    </numbers>
</bsp>

完整的.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <bsp>
<first>
    <team>
       <member>one</member>
       <member>three</member>
    </team>
    </first>
    <second>
    <mems>
       <member>four</member>
       <member>five</member>    
    </mems>
    </second>
</bsp>

输出

所有不完整的(成员和 *stringÜ的值完全匹配)。如何在xslt 2.0中使用一个巨大的文件来做到这一点?

首先,我们需要访问文档。

预期产出

      <string>two</pupil>
      <string>two</pupil>
      <string>fife</string>

有什么方法可以做到这一点,推荐? 编辑 示例现在更抽象...

4

1 回答 1

1

如果您正在处理学生.xml,则以下内容应该有效

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

    <xsl:output method="xml"/>

    <xsl:template match="/">
        <xsl:for-each select="school">
            <!-- to insert header for the school -->
            <xsl:for-each select="class">
                <!-- to insert header for the class -->
                <xsl:for-each select="pupil">
                    <xsl:if test="not(document('sports.xml')//member = .)">
                        <xsl:copy-of select="."/>
                    </xsl:if>
                </xsl:for-each>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

在哪里:

  • not(- 只得到那些不匹配的人
  • document('sports.xml')从这个文件
  • //member谁被包围在<member>任何深度
  • = .)谁匹配我们正在处理的学生。
于 2014-04-14T21:58:32.520 回答