Xml XSLT:为什么<;对于每个>;不重复两次

Xml XSLT:为什么<;对于每个>;不重复两次,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,对于给定的XSL和XML,我只得到一行输出。由于每个的都有两个序列,因此我希望有两行输出? 我错过了什么 使用的XSL: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0"> &l

对于给定的XSL和XML,我只得到一行输出。由于每个的
都有两个序列,因此我希望有两行输出?
我错过了什么

使用的XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="2.0">
    <xsl:output indent="yes" />
    <xsl:strip-space elements="*"/> 

    <xsl:template match="/">

    <xsl:variable name="pat" as="item()*">
        <xsl:sequence select="/myroot[1]/mychild[1]/test[1]/@testing"/>
        <xsl:sequence select="/myroot[1]/mychild[2]/comment[1]"/>
    </xsl:variable>

    <xsl:for-each select="$pat">
        <xsl:choose>
            <xsl:when test=". instance of element()">
                <xsl:text>        Node: </xsl:text>
            </xsl:when>
            <xsl:otherwise>
                <xsl:text>Atomic value: </xsl:text>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:value-of select="."/>
        <xsl:text>&#xA;</xsl:text>
    </xsl:for-each>
    </xsl:template>

</xsl:stylesheet>

节点:
原子值:

;
使用的XML:

<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<myroot >
    <mychild id="123">
        <fruit>apple</fruit>
        <test hello="world" testing="removed" brackets="angled" question="answers"/>
        <comment>This is a comment</comment>
    </mychild>         
    <mychild id="789">
        <fruit>orange</fruit>
        <test brackets="round" hello="greeting">
            <number>111</number>
        </test>
        <!-- this is a test comment -->
        <dates>
            <modified>123</modified>
            <created>880</created>
            <accessed>44</accessed>
        </dates>
    </mychild>         
    <mychild id="456">
        <fruit>banana</fruit>
        <comment>This will be removed</comment>
    </mychild>
</myroot>

苹果
这是一个评论
橙色
111
123
880
44
香蕉
这将被删除
输出如下所示。我只收到一行。
为什么第二个序列没有显示任何内容

<?xml version="1.0" encoding="UTF-8"?>

原子值:已删除

我希望它能显示如下所示的内容

 <?xml version="1.0" encoding="UTF-8"?>

原子值:已删除

节点:这是一条注释,因为所选序列中只有一个节点:

  • /myroot[1]/mychild[1]/test[1]/@testing
    选择1个节点
  • /myroot[1]/mychild[2]/comment[1]
    选择0个节点
  • 对于#2,如果希望选择第二个
    mychild
    元素的第一个comment节点子元素,而不是第一个
    comment
    元素(该元素不作为第二个
    mychild
    元素的子元素存在),请更改

        <xsl:sequence select="/myroot[1]/mychild[2]/comment[1]"/>
    
    
    


    因为所选序列中只有一个节点:

  • /myroot[1]/mychild[1]/test[1]/@testing
    选择1个节点
  • /myroot[1]/mychild[2]/comment[1]
    选择0个节点
  • 对于#2,如果希望选择第二个
    mychild
    元素的第一个comment节点子元素,而不是第一个
    comment
    元素(该元素不作为第二个
    mychild
    元素的子元素存在),请更改

        <xsl:sequence select="/myroot[1]/mychild[2]/comment[1]"/>
    
    
    

    
    
    您的问题缺少关键标记。因为您使用的是
    实例,所以我添加了XSLT-2.0标记。现在这是一个全新的问题。你的问题缺少一个关键的标签。因为您使用的是
    实例,所以我添加了XSLT-2.0标记。现在这是一个全新的问题。当然,如果$node是注释节点,那么
    $element()的节点实例
    将为false。@MichaelKay:True,但该条件对于注释节点永远不会起作用,因为有故障的XPath#2没有选择注释节点。(仍然有一个
    xsl:other
    ,如果它存在,它将报告第二次迭代。)当然,如果$node是注释节点,那么元素()的
    $node实例
    将为false。@MichaelKay:True,但该条件对于注释节点永远不会起作用,因为错误的XPath 2没有选择注释节点。(仍然有一个
    xsl:otherwise
    ,如果存在,它将报告第二次迭代。)