在 XSLT 中嵌入静态 CDATA 及其标签

发布于 2024-11-01 09:37:46 字数 1440 浏览 1 评论 0原文

我需要从 XSL 输出嵌入 XSL 中的静态 CDATA 构造,而不是从我正在转换的 XML 输出。例如...

<?xml version="1.0"?> 
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">
  <xsl:output method="xml" indent="yes"/>
<!-- ================================================== -->
  <xsl:template match="/">
    <Document>
      <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
      ]]>
      </text>
      <xsl:apply-templates select="//tag"/>
    </Document>
  </xsl:template>
<!-- ================================================== -->
  <xsl:template match="tag">
    So on and so forth...
  </xsl:template>
<!-- ================================================== -->
</xsl:stylesheet>

我希望输出...

<?xml version="1.0"?> 
<Document>
  <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
  ]]>
  </text>
  So on and so forth...
</Document>

但我得到的是...

<?xml version="1.0"?> 
<Document>
  <text>
&lt;b&gt;static&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
text
&lt;br/&gt;&lt;br/&gt;
  </text>
  So on and so forth...
</Document>

我尝试了转义文本和实体的几种组合,但似乎都不起作用。

I need to output from the XSL a static CDATA construct embedded in the XSL, not from the XML that I am transforming. For example...

<?xml version="1.0"?> 
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">
  <xsl:output method="xml" indent="yes"/>
<!-- ================================================== -->
  <xsl:template match="/">
    <Document>
      <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
      ]]>
      </text>
      <xsl:apply-templates select="//tag"/>
    </Document>
  </xsl:template>
<!-- ================================================== -->
  <xsl:template match="tag">
    So on and so forth...
  </xsl:template>
<!-- ================================================== -->
</xsl:stylesheet>

I want this to output...

<?xml version="1.0"?> 
<Document>
  <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
  ]]>
  </text>
  So on and so forth...
</Document>

But what I get is...

<?xml version="1.0"?> 
<Document>
  <text>
<b>static</b>
<br/><br/>
text
<br/><br/>
  </text>
  So on and so forth...
</Document>

I've tried several combinations of escaping the text and entities, but none seem to work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄居者 2024-11-08 09:37:46

用于

<xsl:output cdata-section-elements="text" />

对某些元素强制执行 CDATA (spec)。

无论如何,您当前得到的内容相当于 CDATA 部分,它不应该打扰您。 (即:如果它因光学原因困扰您,请克服它。如果它因技术原因困扰您,请修复它们。)

Use

<xsl:output cdata-section-elements="text" />

to enforce CDATA for certain elements (spec).

In any case, what you currently get is equivalent to a CDATA section and it should not bother you. (i.e.: If it's bothering you for optical reasons, then get over it. If it is bothering you for technical reasons, fix them.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文