xslt匹配多个元素,但包含cdata

用户名

我一直试图编写一个XSLT,它将选择类别为“ Featured”的项目,因为类别内的数据包装在CDATA中。

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
          <body>
            <h2>Matched Items</h2>
            <xsl:apply-templates select="//item[category/.='Featured']"/>
          </body>
        </html>
      </xsl:template>

      <xsl:template match="item">
        <div class="news-item" width="100%">
          <div class="news-item-description">
            <xsl:value-of select="description"/>
          </div>
        </div>
        <div class="clear" />
      </xsl:template>
    </xsl:stylesheet>

这是我的数据样本。这是来自wordpress博客的内容,因此我无法更改输出。

    <items>
      <item>
        <category>
          <![CDATA[ Category A ]]>
        </category>
        <category>
          <![CDATA[ Featured ]]>
        </category>
        <description>This item should be in the output HTML</description>
      </item>
      <item>
        <category>
          <![CDATA[ Uncategorized ]]>
        </category>
        <category>
          <![CDATA[ Some other category ]]>
        </category>
        <description>This item should NOT be in the output HTML</description>
      </item>
      <item>
        <category>
          <![CDATA[ Uncategorized ]]>
        </category>
        <category>
          <![CDATA[ Featured ]]>
        </category>
        <description>This item should be in the output HTML</description>
      </item>
    </items>

我想要的输出看起来像这样:

    <html>
    <body>
    <h2>Matched Items</h2>
    <div class="news-item" width="100%">
    <div class="news-item-description">This item should be in the output HTML</div>
    </div>
    <div class="clear"></div>
    <div class="news-item" width="100%">
    <div class="news-item-description">This item should be in the output HTML</div>
    </div>
    <div class="clear"></div>
    </body>
    </html>

这似乎应该很容易。多个类别元素加上CDATA包装器的结合让我陷于困境。谢谢

托玛拉克

//item[category/.='Featured'] 在语法上甚至都不是有效的XPath,我认为这是一个错字。

无论如何,这与CDATA无关。CDATA是没有意义的,它不存在。仅在解析文档时才重要当您在输入上使用XPath时,它已经不存在了。

在进行字符串比较之前,需要修剪空格。尝试:

<xsl:apply-templates select="//item[category[normalize-space() = 'Featured']]" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

xslt匹配多个元素,但包含cdata

来自分类Dev

序列包含多个匹配元素-复合键

来自分类Dev

XSLT匹配元素并填充

来自分类Dev

EF代码优先:序列包含多个匹配元素

来自分类Dev

调用存储过程时“序列包含多个匹配元素”

来自分类Dev

序列在批量插入中包含多个匹配元素

来自分类Dev

XSLT匹配多个条件

来自分类Dev

XSLT 不匹配多个条件

来自分类Dev

通过XSLT用CDATA部分环绕XML元素

来自分类Dev

XSLT通过元素匹配从xml复制元素

来自分类Dev

在xslt中选择多个元素

来自分类Dev

序列不包含匹配元素

来自分类Dev

jQuery使用包含多个匹配条件的包含

来自分类Dev

如何在不删除不包含CDATA的元素的情况下删除CDATA?

来自分类Dev

打印多个匹配的元素名称

来自分类Dev

AngularJS +指令:多个被包含的元素

来自分类Dev

序列包含多个元素Mvc

来自分类Dev

Android Shape包含多个元素

来自分类Dev

XSLT中的模式匹配元素名称

来自分类Dev

具有匹配值的XSLT计数元素

来自分类Dev

如何使用XSLT匹配元素并输出HTML?

来自分类Dev

XSLT在输出中包含空元素

来自分类Dev

在xslt中检查多个匹配条件

来自分类Dev

给定路径的 XSLT 多个匹配模板

来自分类Dev

如何对XSLT中多个元素的乘积求和?

来自分类Dev

XSLT对多个属性/元素进行排序

来自分类Dev

XSLT如何处理多个嵌套元素?

来自分类Dev

XSLT用键选择多个元素

来自分类Dev

防止XSLT中元素的多个定义