在节点之间显示文本

时间:2014-08-12 15:02:47

标签: php xml xslt

我有这个xml结构,我的标签之间有文字:

<content>
    <line>Lorem ipsum dolor sit amet, consetetur sadipscing elitr<link>3</link></line>
</content>
<content>
    <line>hendrerit in vulputate velit esse</line>
</content>
<content>
    <line><bold>iriure dolor</bold>in hendrerit in vulputate velit esse molestie consequat</line>
</content>

我需要得到这个结果:

<p>
    <span>Lorem ipsum dolor sit amet, consetetur sadipscing elitr<a href=''>3</a></span>
</p>
<p>
    <span>hendrerit in vulputate velit esse</span>
</p>
<p>
    <span><b>iriure dolor</b>in hendrerit in vulputate velit esse molestie consequat</span>
</p>

但我得到了这个结果:

<p>
    <span><a href=''>3</a></span>
</p>
<p>
    <span>hendrerit in vulputate velit esse</span>
</p>
<p>
    <span><b>iriure dolor</b></span>
</p>

我该怎么做?

1 个答案:

答案 0 :(得分:1)

下面是一个样式表,可以生成所需的输出。无法说这是否对您有用,因为您没有说明您尝试的解决方案是使用PHP还是只是调用XSLT样式表。

您的输入XML格式不正确,样式表假设此输入:

输入XML

<root>
    <content>
    <line>Lorem ipsum dolor sit amet, consetetur sadipscing elitr<link>3</link></line>
</content>
<content>
    <line>hendrerit in vulputate velit esse</line>
</content>
<content>
    <line><bold>iriure dolor</bold>in hendrerit in vulputate velit esse molestie consequat</line>
</content>
</root>

<强>样式表

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>

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

    <xsl:template match="line">
        <span>
            <xsl:apply-templates/>
        </span>
    </xsl:template>

    <xsl:template match="link">
        <a href="">
            <xsl:apply-templates/>
        </a>
    </xsl:template>

    <xsl:template match="bold">
        <b>
            <xsl:apply-templates/>
        </b>
    </xsl:template>

</xsl:stylesheet>

XML输出

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <p>
      <span>Lorem ipsum dolor sit amet, consetetur sadipscing elitr<a href="">3</a>
      </span>
   </p>
   <p>
      <span>hendrerit in vulputate velit esse</span>
   </p>
   <p>
      <span>
         <b>iriure dolor</b>in hendrerit in vulputate velit esse molestie consequat</span>
   </p>
</root>