Xml xslt信息捕获

Xml xslt信息捕获,xml,xslt,Xml,Xslt,我有一个如下所示的xml输入: <food> <fruit>Orange</fruit> isGood <fruit>Kiwi</fruit> isGood <fruit>Durian</fruit> isBad </food> 橙色 很好 几维鸟 很好 榴莲 伊斯巴德 我想将其转换为如下所示的html语句: <food> <fruit&

我有一个如下所示的xml输入:

<food>
  <fruit>Orange</fruit>
    isGood
  <fruit>Kiwi</fruit>
    isGood
  <fruit>Durian</fruit>
    isBad
</food>

橙色
很好
几维鸟
很好
榴莲
伊斯巴德
我想将其转换为如下所示的html语句:

<food>
  <fruit>Orange</fruit>
    isGood
  <fruit>Kiwi</fruit>
    isGood
  <fruit>Durian</fruit>
    isBad
</food>
橙色很好。猕猴桃很好吃。榴莲不好吃

请注意,水果元素均为斜体

我的代码如下所示。但它有问题

  <xsl:template match="/" >
    <food>
   <xsl:apply-templates select="food"/>
    </food>
  </xsl:template>

  <xsl:template match="food">
    <xsl:element name="fruit"> 
       <xsl:value-of select="fruit" /> 
    </xsl:element>        
  </xsl:template>

您的XSLT似乎试图重现原始输入,而不是生成您想要的HTML输出

这里有一个这样做的例子

XML输入

<food>
    <fruit>Orange</fruit>
    isGood
    <fruit>Kiwi</fruit>
    isGood
    <fruit>Durian</fruit>
    isBad
</food>

橙色
很好
几维鸟
很好
榴莲
伊斯巴德
XSLT1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="html"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="food">
        <html>
            <p><xsl:apply-templates/></p>
        </html>
    </xsl:template>

    <xsl:template match="fruit">
        <i><xsl:value-of select="."/></i>
        <xsl:value-of select="concat(' ',normalize-space(following-sibling::text()),'. ')"/>
    </xsl:template>

    <xsl:template match="text()"/>

</xsl:stylesheet>

HTML输出(原始)


橙色很好。猕猴桃很好吃。榴莲不好吃。

HTML输出(浏览器显示)

橙色很好。猕猴桃很好吃。榴莲不好吃。


您输入的XML看起来不好,因为中间的文本似乎不属于水果节点Hi yog,是的,文本isGood和isBad不在水果节点内。它在食物节点内。