问题标签 [pcdata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6420 浏览

xml - XML DTD 中的 PCDATA 与 CDATA

在 XML DTD's - 当定义一个元素时,我们使用#PCDATA 来表示这个元素可以包含任何可解析的文本。在定义一个属性时,我们用 CDATA 来表示它的值可以是任何字符数据。

XML 中使用的 CDATA 是 XML 解析器(多字符转义序列)未解析的内容。一致地,当我们使用 CDATA 来定义属性时;解析器不应该解析它。但是,确实如此!

那么,为什么不能用 PCDATA 代替 CDATA 来定义属性呢?

更新- 这一直保持这种方式与 SGML 向后兼容。在 SGML 中这样命名的原因是什么?

0 投票
1 回答
261 浏览

xml - PCDATA 内的 CDATA

我读了这段文字并没有理解它:

PCDATA 表示已解析的字符数据,因此在这种情况下,现在允许声明的元素在其中包含字符数据,您可能想知道是否有一种方法可以定义其中包含未解析的 CDATA 部分的元素。
答案是,请记住,CDATA 标记本身实际上已被解析。只有 CDATA 部分中的文本内容是未解析的。所以没有办法说,它只是一个 CDATA 部分。您要定义的是#PCDATA。然后这表明元素可以在其中包含解析车厢数据。

换句话说,我该怎么说?是什么意思?
PCDATA - 已解析的字符数据
CDATA - (未解析的)字符数据

PCDATA 可以解析标签。所以PCDATA可以解析CDATA:PCDATA会理解CDATA。CDATA 保留内部文本。那就是 CDATA 将在 PCDATA 中工作。正确的?

这个

所以没有办法说,它只是一个 CDATA 部分。您要定义的是#PCDATA。然后这表明元素可以在其中包含解析车厢数据。

杀我。我无法理解意思。

谢谢

0 投票
1 回答
162 浏览

parsing - RTF #PCDATA 与文档文本

我试图理解RTF 1.9.1 规范文档,但 #PCDATA(没有控制字的文本)让我感到困惑。下面是一些示例代码,以显示我不明白的内容。请注意,下面的文本格式不正确。我对其进行了格式化以使其看起来更好。

规范说:

如果字符不是左大括号 ({)、右大括号 (})、反斜杠 (\) 或 CRLF(回车/换行),则阅读器假定该字符是纯文本并将该字符写入使用当前格式属性的当前目的地。

如果我遵循上面的规范,我最终会写Times New Roman文件。解析器应该如何知道它是否遇到了#PCDATA 或文档文本?

0 投票
0 回答
785 浏览

xml - 将graphml文件导入R igraph会导致PCDATA invalid char value错误

对于我的硕士论文,我必须做一些网络分析。起初,我使用 Java 将我的推文数据重组为具有边缘和顶点属性的边缘列表。

将 Java 创建的 csv 文件导入 RI 后,从边缘数据中创建顶点数据框,最终使用 igraph 包构建图形。

用 write.graph 保存图形后,我需要在以后再次导入它。使用 read.graph 最初导致数据不是正确的 UTF-8 错误(类似于Graphml parse error),所以我通过使用 iconv() 防止了这种情况。

现在我收到错误:

显然我在 graphml 文件中有无效的 XML 字符。我首先尝试通过在我的 Java 程序中使用 replaceAll() 来防止无效字符,该程序应该在重组过程中删除这些字符,但是我发现的所有正则表达式都没有帮助。一个表达式将错误转换为 char 值 16 而不是 3,但不幸的是我再也找不到它了。

有人可以给我一个匹配所有可能的无效字符的表达式,分别防止上述错误吗?

这是我的重构数据的 Java 代码:

egde 列表通过另一种可能不太重要的方法以 csv 格式写入文件。

我将边缘列表转换为图形的 R 代码(我缩短了演示目标的路径):

引发错误的 R 脚本:

谢谢你的帮助!

0 投票
2 回答
208 浏览

c# - xml 数据总是被创建为 CDATA 而不是 PCDATA

我用 编写了一个 Web 服务C#,并且我想要他的一种方法返回一个 XML。我已经设法做到了,但是所有数据都被标记为CDATA而不是被解析。它不是我要找的。

这是我的代码:

这是当前输出的示例:

这就是我想要实现的目标:

所以我的问题真的是,如何摆脱 CDATA 标签,为什么它首先存在。

我是xml新手,所以请耐心等待。

0 投票
1 回答
2698 浏览

xml - XML 中的 PCDATA 有什么用?

默认情况下,XML 中的所有内容都是解析的字符数据(#PCDATA),那么为什么我们需要在 DTD 中指定#PCDATA。有人请解释一下。谢谢。

0 投票
1 回答
284 浏览

xml - DTD Element:文本和元素之间的选择

我想为我的 xml 文档定义一个 dtd。

在这个 dtd 中,我有一个名为

. p 可以包含#PCDATA 或其他元素(img)。我该如何声明?我试过这个:

但这不起作用。响应错误:错误:'>' 是一个意外的标记。预期的标记是“*”。当我尝试这个时:

发生错误:错误:名称不能以“#”字符开头,十六进制值 0x23。

如何实现 p 包含文本或其他元素 img?两个选项都必须有效。必须实施这两个选项之一。

问候!

0 投票
1 回答
95 浏览

php - 如何使用 PHP DOM 分别解析 PCDATA 和子元素?

我正在尝试解析 dtbook 的 XML,其中包含稍后包含 p-tag 的级别(1、2 和 3)。我正在用 PHP DOM 做这个。链接到 XML

在这些 p-tags 中,有一些 noteref-tags。我确实掌握了这些,但似乎我能得到的唯一结果是 noteref 出现在 p-tag 之前或之后。我需要一些注释出现在 p-tag 中;或者换句话说,它们实际上应该在哪里。

这是我现在为 p-tag 获得的代码。在此之前,我正在遍历 dt-book 以获取 p-tag。这很好用。

这些是我得到的结果:

特殊教育...... 5. 兴趣...... 19 世纪 6. 56

56特殊教育...... 5. 兴趣...... 19 世纪 6.

我还希望 p-tag显示 noteref-tag 中的内容。这应该由 noteref-tag 完成(仅)。

那么,有人知道可以做些什么来解决这些问题吗?感觉就像我已经用谷歌搜索并尝试了几乎所有东西。

0 投票
1 回答
170 浏览

xml - #PCDATA 的 XML 验证

我有这个简单的 XML:

我希望这是有效的,但一些在线验证器报告它是无效的,因为输入和文件元素包含非文本节点。

如果我删除输入元素中的文件元素,则报告生成的 XML 是有效的,所以我希望“非文本节点”是子元素(输入中的文件和文件中的名称和类型)。

我希望这是有效的,因为元素的XML 规范指定如果元素与一组条件中的一个匹配,则该元素是有效的,其中一个条件是:

声明与 Mixed 匹配,并且内容(在将任何实体引用替换为其替换文本之后)由字符数据(包括 CDATA 部分)、注释、PI 和其类型与内容模型中的名称匹配的子元素组成。

请注意最后的“和子元素......”。

混合的产生是:

第二种情况是我的输入和文件:(#PCDATA)

混合内容的有效性要求是,只要它们的名称与内容模型中的名称匹配,就可以存在子元素,它们就是这样做的。

我误解了规范还是这些验证器不正确?

如果我从 DTD 中删除文件、名称和类型元素的声明,但将子元素保留在输入元素的内容中,那么我会收到额外的验证错误,表明没有声明这些类型。我预计会出现这些错误,因为验证要求是子元素名称与内容模型中的名称匹配,并且在删除这些声明后,它们与内容模型中的名称不匹配。

但是,即使没有 DTD 中的文件、名称和类型元素的声明,也有其他验证器报告 XML 是有效的。这似乎也是验证器的错误,因为验证要求清楚地表明子元素名称必须与内容模型中的名称匹配,而当这些元素声明被删除时,它们不会匹配。

我知道有各种 XML 验证实现,它们的工作方式并不相同,因此它们不可能都是严格正确的。我最感兴趣的是对规范有一个严格正确的理解。

严格遵守具有 content 的元素的有效性要求(#PCDATA)

  1. 该元素的内容可以包含子元素吗?
  2. 如果是这样,这些元素的名称是否必须与 DTD 中元素的名称匹配?

规范似乎只要求子元素的名称与 DTD 中元素的名称相匹配,但我认为这些元素的内容和属性也应该与 DTD 中的声明相匹配,但规范实际上并没有这么说。因此,再次严格遵守规范的有效性要求,具有内容的元素的子元素的内容和属性是否必须与(#PCDATA)DTD 中的这些声明相匹配?如果是这样,规范中的哪里是这样说的?

最后,根据您可以推荐的规范,是否有任何易于使用(在线或可安装到 Linux)的 XML 验证器严格正确?

0 投票
1 回答
61 浏览

xml - CDATA inside PCDATA handling in XML

If we have the following XML element:

and the another one

Do both elements x and y have the value of a < b? Is the second example valid, common, recommended or something like that?

AFAK y has three child elements - PCDATA a, CDATA < and PCDATA b and some libraries parse it exactly like that. On the other hand https://pugixml.org/ for one returns only a as value for x (helper function).