XSL:如何基于单独的 XML 元素限制 apply-template 中的选择

发布于 2024-10-01 02:51:56 字数 702 浏览 1 评论 0原文

这是我正在尝试做的一个例子。 XML:

<TEST>
  <NODE>
    <A id="ELEMENT_1"/>
    <A id="ELEMENT_2"/>
    <A id="ELEMENT_3"/>
  </NODE>
  <SOME_OTHER_NODE>
    <B nodeId="ELEMENT_1" invalid="1"/>
  </SOME_OTHER_NODE>
</TEST>

XSL:

<xsl:apply-templates select="A[?? only select the A's where there is no B where A/@id = B/@nodeId and B/@invalid = 1 ??]"/>

这可能吗?在实际的 xsl 中,我当前有类似这样的内容:

<xsl:apply-templates select="(ANSWER|GROUP)[position() mod 2 = 0]"/>

我想找到一种方法来限制基于 xml 中不同元素选择的答案。希望我已经清楚地解释了这一点,如果没有,请告诉我。也许有更好的方法来做这样的事情。我愿意接受任何反馈或建议。谢谢。

Here is an example of what I am trying to do.
XML:

<TEST>
  <NODE>
    <A id="ELEMENT_1"/>
    <A id="ELEMENT_2"/>
    <A id="ELEMENT_3"/>
  </NODE>
  <SOME_OTHER_NODE>
    <B nodeId="ELEMENT_1" invalid="1"/>
  </SOME_OTHER_NODE>
</TEST>

XSL:

<xsl:apply-templates select="A[?? only select the A's where there is no B where A/@id = B/@nodeId and B/@invalid = 1 ??]"/>

Is this even possible? In the actual xsl I have something like this currently:

<xsl:apply-templates select="(ANSWER|GROUP)[position() mod 2 = 0]"/>

And I want to find a way to limit the ANSWER's selected based upon a different element in the xml. Hopefully I have clearly explained this, let me know if I have not. Perhaps there is a better way of doing something like this. I am open to any feedback or suggestions. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤星 2024-10-08 02:51:56

此 XPath 表达式(节点集比较)以 NODE 作为上下文:

A[not(@id = ../../SOME_OTHER_NODE/B[@invalid='1']/@nodeId)]

使用键:

<xsl:key name="kInvalidTest" match="B[@invalid=1]" use="@nodeId"/>
...
<xsl:appy-templates select="A[not(key('kInvalidTest',@id))]"/>  

This XPath expression (node set comparison) with NODE as context:

A[not(@id = ../../SOME_OTHER_NODE/B[@invalid='1']/@nodeId)]

With keys:

<xsl:key name="kInvalidTest" match="B[@invalid=1]" use="@nodeId"/>
...
<xsl:appy-templates select="A[not(key('kInvalidTest',@id))]"/>  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文