【问题标题】:I don't understand the idea of CDATA我不明白 CDATA 的想法
【发布时间】:2018-02-25 10:36:24
【问题描述】:

我有一个客户要求:

         <account>
         <Salutation><![CDATA[Dear Customer]]></Salutation>
         </account>

我不明白他们为什么提到这个。当我尝试用

显示它时
         <xsl:value-of select="account/Salutation" /> 

我得到了正常的输出Dear Customer。如果这是所需的输出,那么为什么提到 CDATA?或者它应该产生[Dear Customer] - 用[]输出?

【问题讨论】:

  • 在这种情况下,Dear Customer&lt;![CDATA[Dear Customer]]&gt; 是等价的。如果数据包含 &lt;&gt;&amp; 等特殊字符,CDATA 部分很有用,但您可以将它用于任何字符串。
  • 好吧,但只是想知道,如果我有
  • 你里面真的有一个&符号吗?问题中没有与号。
  • 是啊……这不是问题。但是我问CDATA中是否有任何特殊字符,我应该如何检索
  • &lt;Salutation&gt;&amp;amp;dear customer&lt;/Salutation&gt;&lt;Salutation&gt;&lt;![CDATA[&amp;dear customer]]&gt;&lt;/Salutation&gt; 是等价的。当您获取文本值时(使用 XML 工具和 API),它将是相同的。

标签: xml xslt cdata


【解决方案1】:
  1. &lt;![CDATA 允许 XML 处理器跳过直到出现 ]]&gt; 这在许多情况下很有用,例如就像在您的示例中一样:在 XML 信封中传输用户生成的数据。

    CDATA 部分之间的数据不得遵循 XML 编码规则,因此可以按原样传输。但也有其他用例:

  2. 在您的示例中,传输的数据是:Dear Customer&lt;![CDATA[]] 仅适用于 XML 处理器。

【讨论】:

  • 谢谢。你能告诉我是否有任何特殊字符,我应该如何给出我的 xsl 代码
  • 我感觉这是一个新问题。您可以使用 通过 XSLT 访问 CDATA。没有什么特别的。
  • 哦,谢谢..我会尝试并回复你...因为客户特别提到了cdata,所以我认为这是一些不同的技术。
  • 大多数时候人们认为他们需要 CDATA 是因为他们生成的 XML 不正确 - 只是将字符串连接在一起,而不是使用正确处理字符转义的工具和 API。 “简单的解决方法”是在可能包含需要转义的内容的区域周围拍击 CDATA。同样,用于接收/解析。当有人指定他们需要 CDATA 时,这是一种气味,让我感到怀疑。
  • @MadsHansen 不同意。如果您的内容会被严重转义,CDATA 很有用。像 XML 或代码片段。 CDATA 使其易于阅读。
猜你喜欢
  • 2012-09-15
  • 1970-01-01
  • 2017-05-28
  • 2016-10-11
  • 1970-01-01
  • 2018-01-12
  • 2014-08-18
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多