是否有与相邻 CDATA 相关的标准?

Any standards related to adjacent CDATA?

我们知道 CDATA 不能嵌套,所以我喜欢使用 Using CDATA inside another CDATA 中提供的解决方案,将 ]]> 替换为 ]]]]><![CDATA[>

因此

<Root>
    <![CDATA[ 
        <AAA>
            <![CDATA[ 
                <BBB>hello world</BBB>
            ]]>
        </AAA>
    ]]>
</Root>

变成

<Root>
    <![CDATA[ 
        <AAA>
            <![CDATA[ 
                <BBB>hello world</BBB>
            ]]]]><![CDATA[>
        </AAA>
    ]]>
</Root>

XML 是我的 API 的响应,它将被不受我控制的其他程序使用。

对于 .NET,我的实验表明 InnerText 可以在所有 CDATA 部分中输出文本。

var Root= doc.SelectNode("/Root");
var cdata = Root.InnerText;

cdata 是

<AAA>
    <![CDATA[ 
        <BBB>hello world</BBB>
    ]]>
</AAA>

.NET 的行为是否符合任何标准?是否有任何标准说明如何处理相邻的 CDATA?如果我的APIreturns相邻CDATA,其他程序或编程语言会不会有问题处理它?

此行为绝对符合标准,应该在任何 XML 处理器中产生相同的结果。 CDATA 部分可用于在任何地方转义任何字符数据(另一个 CDATA 部分除外),您可以根据需要使用任意数量的字符数据,无论是否相邻。来自 specification:

Definition: CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup.