使用XSLT交叉评估节点

使用XSLT交叉评估节点,xslt,xslt-1.0,Xslt,Xslt 1.0,我试图分析下面的输入XML,在同一段落节点中,当一个节点的开始值大于另一个句子[SECONDARY]/TOKEN的开始值时,用从

我试图分析下面的输入XML,在同一
段落
节点中,当一个节点的
开始
值大于另一个
句子[SECONDARY]/TOKEN
开始
值时,用
进一步标记该节点

下面是输入XML:

<DOCUMENT>
  <SECTION>
    <PARAGRAPH TRACK="0">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="14" END="25" SENTENCE_BEGIN="0" SENTENCE_END="48"/>   
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="0" END="9" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN  BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>       
       </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="27" END="34" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="1">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="2">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>         
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="3">
      <SENTENCE NAME="PRIMARY" COUNT="4">
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>         
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="141" END="147" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="79" END="88" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="3">
        <TOKEN  BEGIN="110" END="113" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN  BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN  BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="99" END="104" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/> 
        <TOKEN  BEGIN="153" END="158" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/> 
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="4">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="119" END="127" SENTENCE_BEGIN="50" SENTENCE_END="133"/>
        </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133"/>       
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="5">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="50" END="58" SENTENCE_BEGIN="50" SENTENCE_END="133"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="60" END="66" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
       </SENTENCE>
    </PARAGRAPH>
  </SECTION>
</DOCUMENT>
下面是完整的期望输出:

<DOCUMENT>
  <SECTION>
    <PARAGRAPH TRACK="0">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="14" END="25" SENTENCE_BEGIN="0" SENTENCE_END="48"/>   
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="0" END="9" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>       
       </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="27" END="34" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="1">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="2">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>         
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="3">
      <SENTENCE NAME="PRIMARY" COUNT="4">
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>         
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="141" END="147" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="79" END="88" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="3">
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="110" END="113" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="99" END="104" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/> 
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="153" END="158" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>   
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="4">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="119" END="127" SENTENCE_BEGIN="50" SENTENCE_END="133"/>
        </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133"/>       
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="5">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="50" END="58" SENTENCE_BEGIN="50" SENTENCE_END="133"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="60" END="66" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
       </SENTENCE>
    </PARAGRAPH>
  </SECTION>
</DOCUMENT>


你知道我做错了什么吗?

你在描述中没有提到你也检查了
句首和
句尾是否相同

问题在于,您对
开始
的检查并不取决于
句子的开始
句子的结束
是否相同。换句话说,您正在测试“是否有一个标记具有相同的句子\u BEGIN,是否有一个标记具有相同的句子\u END,是否有一个标记具有较低的开始”

我想这就是你需要的

<xsl:if test="../../SENTENCE[@NAME='SECONDARY']/TOKEN[@SENTENCE_BEGIN = current()/@SENTENCE_BEGIN and @SENTENCE_END = current()/@SENTENCE_END and not(@BEFORE_PRIMARY) and current()/@BEGIN &gt; @BEGIN]">

谢谢!是的,你是对的,对不起!我没有补充这个要求。我将更新这个问题
<SENTENCE NAME="SECONDARY" COUNT="1">
     <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="141" END="147" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>        
</SENTENCE>
<DOCUMENT>
  <SECTION>
    <PARAGRAPH TRACK="0">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="14" END="25" SENTENCE_BEGIN="0" SENTENCE_END="48"/>   
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="0" END="9" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>       
       </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="27" END="34" SENTENCE_BEGIN="0" SENTENCE_END="48" SAME_SENTENCE="YES"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="1">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
        <TOKEN BEGIN="37" END="41" SENTENCE_BEGIN="0" SENTENCE_END="48"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="43" END="47" SENTENCE_BEGIN="0" SENTENCE_END="48"/> 
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="2">
      <SENTENCE NAME="PRIMARY" COUNT="2">
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
        <TOKEN BEGIN="164" END="170" SENTENCE_BEGIN="135" SENTENCE_END="187"/>         
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187"/>          
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="3">
      <SENTENCE NAME="PRIMARY" COUNT="4">
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
        <TOKEN BEGIN="93" END="97" SENTENCE_BEGIN="50" SENTENCE_END="133"/>         
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
        <TOKEN BEGIN="135" END="139" SENTENCE_BEGIN="135" SENTENCE_END="187"/>
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="141" END="147" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>        
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEFORE_PRIMARY="YES" BEGIN="79" END="88" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="3">
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="110" END="113" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/>          
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="172" END="175" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="99" END="104" SENTENCE_BEGIN="50" SENTENCE_END="133" SAME_SENTENCE="YES"/> 
        <TOKEN FURTHER_FROM_PRIMARY="YES" BEGIN="153" END="158" SENTENCE_BEGIN="135" SENTENCE_END="187" SAME_SENTENCE="YES"/>   
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="4">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="119" END="127" SENTENCE_BEGIN="50" SENTENCE_END="133"/>
        </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="129" END="132" SENTENCE_BEGIN="50" SENTENCE_END="133"/>       
      </SENTENCE>
    </PARAGRAPH>
    <PARAGRAPH TRACK="5">
      <SENTENCE NAME="PRIMARY" COUNT="1">
        <TOKEN BEGIN="50" END="58" SENTENCE_BEGIN="50" SENTENCE_END="133"/>          
      </SENTENCE>
      <SENTENCE NAME="SECONDARY" COUNT="1">
        <TOKEN BEGIN="60" END="66" SENTENCE_BEGIN="50" SENTENCE_END="133"/>   
       </SENTENCE>
    </PARAGRAPH>
  </SECTION>
</DOCUMENT>
<xsl:if test="../../SENTENCE[@NAME='SECONDARY']/TOKEN[@SENTENCE_BEGIN = current()/@SENTENCE_BEGIN and @SENTENCE_END = current()/@SENTENCE_END and not(@BEFORE_PRIMARY) and current()/@BEGIN &gt; @BEGIN]">