使用父节点进行XSLT转换

时间:2016-03-03 08:06:46

标签: xml xslt

任何人都可以帮我转换使用XSLT的以下XML。

我的XML文件类似于:

<action>
    <item 
        Category ="shop"
        Id="1234"
        Test="1">
        <message>
            Some message
        </message>
    </item>
    <item 
        Category ="rent"
        Id="3456"
        Actual="1"
        Subdivision="333">
        <message>
            Some shops for rent
        </message>
    </item>
    <item>
    </item>
</action>

现在我需要在XSLT中编写代码。如果<message>是/包含&#34;商店出租&#34;然后我想得到结果/消息&#34;一些消息&#34;。

你能帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果某个其他<message>节点包含文本&#34;商店出租&#34;以下XSLT输出上一个<message>节点的文本。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="text()" />       <!-- ignores other text content -->

  <xsl:template match="action/item/message[contains(text(),'shops for rent')]">
    <xsl:value-of select="../preceding-sibling::item[1]/message" />
  </xsl:template>
</xsl:stylesheet> 

输出

  

一些消息

如果您真的想要输出xsl:message,请使用<xsl:value>围绕<xsl:message>