gpt4 book ai didi

xml - 使元素始终只包含 CDATA(在 XML 文档中嵌入 XML 示例)

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

我正在为我的大学计算机俱乐部准备一个关于 XML 和 XSLT 的演示文稿,我不是专家,但我比任何人都好,而且它只是一个 1 小时的初级读物。因此,对于我的幻灯片,我想我会使用 XML 文档。然后我会把它变成一系列带有 XSLT 2.0 的网页

所以我们有我的源文档

<slideshow>
<slide title="Example">
<para>Below is an example of an XML document</para>
<code> <![CDATA[
<?xml version="1.0"?>
<elephant Name="Fido">
<head>
<eyes qty="2" colour="blue"/>
<trunk/>
<ears qty="2"/>
</head>
<body>
Thin, ribs showning
</body>
<legs qty="4">
Roughly 1.5m Long
</legs>
</elephant> ]]>
</code>
</slide>
</slideshow>

因为我不希望我的示例构成文档的 XML 结构的一部分,(并且不希望它们被 XSLT 更改)我有 CDATA 部分。所以,每次我有一个 <code>...</code>元素,它总是写成: <code><![CDATA[...]]></code>这是信息的重复。

我是否可以声明每个 code元素仅包含(未解析的)字符数据?

所以我会写<code>...</code> ,它永远不会尝试解析里面的内容。

似乎可以用 DTD 来完成,对吧?


我正在寻找的答案是

使用 <!DECLARE-CDATA-ELEMENT code>这将生成代码元素,但不会解析其内容。


你可以用实体模拟它:

<!ENTITY CodeStart "<code><![CDATA["> 
<!ENTITY CodeEnd "]]></code>">

然后使用:&CodeStart;<don'tParse/>&CodeEmd;


不,这是不可能的,但是你可以通过...强制所有代码段不包含子元素


不,但你可以像这样进行预处理:......


这些不是答案,它们只是表明答案可能是什么样的(希望现在更清楚了)

最佳答案

Since I don't want my examples to form part of the XML structure of the document, (and don't want them to be changed by the XSLT) I have the CDATA section.

没有必要使用 CDATA 部分来保护某些 XML 片段不被“XSLT 更改”——只需以这样的方式编写您的 XSLT 代码,使其复制以 code 为根的任何子树元素

Is it possible forme to declare that every code element only contains (Unparsed) character data?

是的,但是 XSLT 不要求源 XML 文档或处理结果有 DTD(模式感知 XSLT 2.0 可以验证这些甚至中间结果,但它只适用于 XML Schema (XSD)),如果有这样的 DTD,XSLT 不使用任何类型信息(唯一的异常(exception)是有一个 ID 属性)。因此,提供这样的 DTD 不会有帮助。

此外,这样的 DTD 将被违反,除非您在 & 的子文本节点中至少转义每个 <code 字符:

来自 W3C XML specification:

"[Definition: All text that is not markup constitutes the character data of the document.] The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form, except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If they are needed elsewhere, they MUST be escaped using either numeric character references or the strings " & " and " < " respectively."

关于xml - 使元素始终只包含 CDATA(在 XML 文档中嵌入 XML 示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10255581/

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