如何识别哪个元素属于XSL中的哪个节点


 <main>
    <root>
    <SubRoot>
    <type>R</type>
    <mand>N</mand>
    <Section>B</Section>
    </SubRoot>
    <SubRoot>
    <type>P</type>
    <mand>Y</mand>
    <Section>A</Section>
    </SubRoot>
    </root>
</main>

我在此文件上具有上面的XML文件,我如何识别该类型R或任何其他元素属于哪个节点,此处是第一个Suproot节点。

在XSL文件中,如果部分具有A为A,则我正在调用模板,并且此部分在第二个suproot节点中,如下所示,现在,我想从条件中的第二个suproot节点访问其他一些值。我该怎么做?

<xsl:choose>
  <xsl:when test="(/main/root/SubRoot[Section = 'A'])">
    //Call some template 
  </xsl:when>
  <xsl:otherwise>
    //some template
   </xsl:otherwise>
</xsl:choose>

我需要在XSL上动态验证它。由于我不知道在运行时不知道XML会生成多少个节点。如果截面元素具有值为A的值,则其内部第二个suproot节点。在此基础上,我如何从第二个suproot节点访问其他元素的值。请同样有助于通过建议的方法告诉我性能问题。

任何想法建议都必须不胜感激。

在您的示例中,您不是在测试A部分中是否在贵族中进行某物,但是您正在测试是否存在A级的贵族,这是一个很大的差异。

我猜您需要的是parent::SubRoot[Section/text() = 'A']之类的东西,它将测试直接父标签是否是带有文本A。

的章节

或类似 ancestor::SubRoot[Section/text() = 'A']之类的东西,它将测试任何父母,伟大的和so-on的标签是一个带有文本a的部分。

或类似 ancestor-or-self::SubRoot[Section/text() = 'A']之类的东西,它将测试节点本身还是任何父母,伟大的,又是这样的标签,是一个带有文本A。

的suproot

最新更新