gpt4 book ai didi

xslt - 如何使用 xslt 处理 xml 命名空间的存在与否

转载 作者:行者123 更新时间:2023-12-02 00:40:48 25 4
gpt4 key购买 nike

我有一些 XML/TEI 文档,我正在编写 XSLT 2.0 来提取它们的内容。

几乎所有 TEI 文档都没有命名空间,但有一个具有默认命名空间 ( xmlns="http://www.tei-c.org/ns/1.0" )。所以所有文档都有相同的方面,带有像<TEI>这样的未限定标签或 <teiHeader> ,但如果我尝试提取内容,所有内容都适用于“非命名空间文档”,但(当然)没有从命名空间文档中提取任何内容。

所以我使用了属性 xpath-default-namespace="http://www.tei-c.org/ns/1.0"现在(当然)唯一有效的文件是命名空间文件。

我根本无法编辑文档,所以我想问的是是否有一种方法可以动态更改 xpath-default-namespace 以使 xpath 像 //teiHeader 一样工作带有命名空间和非命名空间的文档

最佳答案

如果您使用的是 XSLT 2.0,那么您可以选择在节点测试中为 namespace 进行通配符匹配。

例如//*:teiHeader

http://www.w3.org/TR/xpath20/#node-tests

A node test can also have the form *:NCName. In this case, the node test is true for any node of the principal node kind of the step axis whose local name matches the given NCName, regardless of its namespace or lack of a namespace.

这在功能上等同于 Dimitre Novachev 的示例,但更短/更易于输入。

但是,这仅适用于 XSLT/XPATH 2.0

关于xslt - 如何使用 xslt 处理 xml 命名空间的存在与否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2652646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com