gpt4 book ai didi

java - 参数化部分 xml 属性值

转载 作者:行者123 更新时间:2023-12-02 01:28:16 26 4
gpt4 key购买 nike

我正在解码几个大型 XML 文件。它们有共同的部分,我决定将共同的部分写入单独的 XML 文件中,然后使用 xi:include 标记将其包含在内。它看起来像这样:

<tag1>
<tag2>
</tag2>
<tag3>
</tag3>
<xi:include href = "long/common/part/of/partial/xml/file1"/>
<xi:include href = "long/common/part/of/partial/xml/file2"/>
</tag1>

此时我想参数化long/common/part。我尝试像这样使用 xsl:variable 定义变量

 <xsl:variable name="test">
"long/common/part/of/partial/xml/"
</xsl:variable>

但是给 href 赋值是个问题,

<xi:include href = "{$test}"/>

<xi:include href = <xsl:value-of select="test"/>

没有工作。有没有办法给 XML 属性赋值?

最佳答案

您在这里混合了 XInclude、XSLT 和临时 {$var} 语法(不是 XML 的一部分)。 可以参数化 XInclude 元素中的 href 值是使用实体引用(XML 和 SGML 的文本替换变量机制以及其他机制)东西):

<xi:include href="&href-value;"/>

其中 href-value 必须以编程方式或(最好)通过声明绑定(bind)到字符串 long/common/part/of/partial/xml/file1在序言中,例如:

<!DOCTYPE tag1 [
<!ENTITY href-value "long/common/part/of/partial/xml/file1">
]>
<tag1>
<xi:include href = "&href-value;"/>
</tag1>

但是,由于现在您无论如何都在使用实体引用,因此您可以仅使用实体来实现相同的效果,而根本不需要 XInclude:

<!DOCTYPE tag1 [
<!ENTITY common-part SYSTEM "long/common/part/of/partial/xml/file1">
]>
<tag1>
&common-part;
</tag1>

这会将 long/common/part/of/partial/xml/file1 的内容拉入 common-part 实体,然后在内容中引用该值,并使用XML 解析器将文档视为 common-part 的替换值(例如,long/common/part/of/partial/xml/file1 中存储的任何内容)已直接在文档中指定。

希望这不会太令人困惑; XML 和 SGML 中的实体如何工作有一般性解释 in this answer

关于java - 参数化部分 xml 属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56523142/

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