【问题标题】:Retain spaces and extract cdata value in xml using xsl使用 xsl 在 xml 中保留空格并提取 cdata 值
【发布时间】:2018-02-25 09:05:12
【问题描述】:

我有一个简单的 xml 文件,

  <root>
        <item1><![CDATA[Slement OF The Late Eleanor Sefton]]></item1>
        <item2>HEY        YOU</item2>
  </root>

我写了一个 xsl 文件来获取这些数据,

     <xsl:template match="/">
     <html>
     <head></head>
     <body>
        <h1>Hello World</h1>

             <p> <xsl:value-of select="root/item1/text()" disable-output- 
               escaping="yes"/></p>


      </body>
      </html>
      </xsl:template>

我需要获取 CDATA 值 [Slement OF The Late Eleanor Sefton] 并保持嘿(有间距)你之间的空间。我没有得到预期的输出。我能对此有所了解吗?

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    由于目标格式是折叠空白的 HTML,我认为这不是 XSLT 问题,而是使用正确的 HTML 元素的问题,例如

    <pre><xsl:value-of select="root/item2"/></pre>
    

    会输出

    你好

    【讨论】:

    • 谢谢,它成功了。我是第一次使用这个
      。但只是想确定一下-这是否在所有类型的转换中都被接受?或者这是否有任何其他缺陷。
    • pre 是一个 HTML 元素,就像 pdivtable 这样与 XSLT 无关。只要目标格式是 HTML,就可以使用pre。它通常伴随着 CSS developer.mozilla.org/en-US/docs/Web/CSS/white-space 设置,如 white-space: prewhite-space: pre-wrap
    • XML 解析和 XSLT 空白剥离都不会从输入中删除任何空格,例如 &lt;item2&gt;HEY YOU&lt;/item2&gt;,因此您无需在此处显式保留任何内容,空格在那里,&lt;xsl:value-of select="item2"/&gt; 输出它们,仅取决于关于结果格式及其呈现规则,您可能看不到它们。
    • 是的,但我可以看到字体样式因其他输出而异,所以问了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多