xml - XSLT——将文本节点的值解释为 XPath 查询(并在转换中使用它)

标签 xml xslt xpath

我一直在努力想出一个像样的解决方案,但我什至找不到一个不雅的。

我有一个看起来有点像这样的 XML 文件:

<Root>
    <Something>
        <SomethingElse>Value of SomethingElse</SomethingElse>
    </Something>

...

    <Map>
        <Node>
            <Path>/Root/Something/SomethingElse</Path>
        </Node>
    <Map>

...

</Root>

我想做的是编写一个采用 <Path> 的 XSL 转换。元素并使用其 text()值作为 XPath 查询以将转换应用于 <SomethingElse>元素,导致类似于例如:

<text>Value of SomethingElse</text>

我首先想到的是:

<xsl:template match="Path">
    <text><xsl:value-of select="{text()}"/></text>
</xsl:template>

但这当然不能像select那样工作不是值属性。

我不知道该怎么做。 Google 搜索只返回有关如何使用 XPath 获取文本值的结果,而不是相反的结果。

我还想对返回的 <SomethingElse> 应用进一步的转换元素,但一旦我弄清楚如何做到这一点,那应该是小菜一碟。

非常感谢你们走到这一步,
斯兰皮斯科

最佳答案

对于纯 XSLT 1.0 甚至 2.0,您需要使用两个样式表,第一个获取输入并使用您要使用的 XPath 表达式创建第二个样式表作为其结果,然后针对原始输入运行第二个样式表。

或者您需要检查您的 XSLT 处理器是否支持将字符串作为路径表达式求值的扩展函数,就像 Saxon 的 http://www.saxonica.com/documentation/extensions/functions/evaluate.xml或者像 AltovaXML 的 altova:evaluate 函数一样 http://manual.altova.com/AltovaXML/altovaxmlcommunity/index.html?xextaltova_general.htm .

关于xml - XSLT——将文本节点的值解释为 XPath 查询(并在转换中使用它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321553/

相关文章:

xml - 用于收集属性作为每个选定节点的名称/值映射的 XPath 3.1 表达式

java - Jersey:以 XML 形式读取 Content-Type:plain/text 响应

Java Web 服务 - 接受 XML 输入

xslt - 性能更高的 XSLT——选择性包含在输出中

xml - 如何修复 : Attribute xmlns:gco redefined

xslt - 为什么 XPath 中的索引从 1 而不是 0 开始?

xml - Vim 中的模式感知 XML 编辑

xml - 使用 XSLT 自动生成 XML 模式

javascript - 如何从动态更新的网页中提取数据

xslt - Xpath表达式VS XSL变量