xslt - 根据条件应用整个模板或模板部分

标签 xslt xpath

我有模板

<xsl:template match="node" mode="some_mode">
    <xsl:value-of select="child1" />
    <xsl:value-of select="child2" />
    <xsl:value-of select="child3" />
</xsl:template>


我想应用模板,这样在一种情况下它将选择模板中指定的所有节点

<xsl:apply-templates select="node" mode="some_node" />  <!-- select all inside the node tag  -->


在另一种情况下,我想限制输出,例如不要选择节点。我可以使用变量或参数吗?还是我必须从头开始编写另一个模板?

<xsl:apply-templates select="node" mode="some_node" />  <!-- select only some tags from the node tag  -->


换句话说,我将多次使用此模板,并且在应用时希望控制输出。我可以定义变量,但是文档说,一旦定义了变量,就无法更改它的值。该参数可能会扭曲,但我对此并不满意。

最佳答案

恐怕不修改模板就无法实现。
您可以考虑将模板输出存储在变量中,然后对其进行处理以除去child1child2值。但是我想您将无法猜测输出的哪一部分来自child1和/或child2

或者,您可以开发另一个执行该替代操作的模板。

编辑:另一个想法:

也许可以在应用模板之前应用过滤来去除child1child2(这将是多遍XSL转换)。

关于xslt - 根据条件应用整个模板或模板部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311287/

相关文章:

php - XSL 文档类型问题

xslt仅在一个节点中用<br/>替换\n吗?

xml - 有没有更好的方法来执行以下 XSLT

xml - filemaker xml 通过 xslt 导出

xslt - 我们可以使用 Netbeans 7 执行 XSLT 2.0 吗?

xslt - 使用xslt获取X位置的节点值

xml - XPath 如何处理 XML 命名空间?

php - 使用命名空间解析 XML 响应

java - Xpath获取DOM子树的所有属性?

XSLT 排序与先行兄弟相结合::