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