2016-03-03 95 views
0

任何人都可以帮助我使用XSLT转换以下XML。使用父节点进行XSLT转换

我的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>是/包含“商店出租”,那么我喜欢得到结果/消息“一些消息”。

你能帮我解决这个问题吗?

回答

0

如果其他<message>节点包含文本“商店出租”,则以下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>