我正在为我的大学计算俱乐部准备一篇关于 XML 和 XSLT 的 Presentation,我不是专家,但我比任何人都好,而且它只是一个 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>
which 将生成代码元素,而不是对其内容进行解析。
你可以用实体来模拟它:
<!ENTITY CodeStart "<code><![CDATA[">
<!ENTITY CodeEnd "]]></code>">
然后使用:&CodeStart;<don'tParse/>&CodeEmd;
不,不能这样做,但您可以强制所有代码段不包含子元素...
不,但是您可以像这样进行预处理:...
这些不是答案,它们只是表明答案可能是什么样的(希望现在更清楚了)