Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSL如何在没有CDATA标记的元素中呈现html_Html_Xml_Xslt - Fatal编程技术网

XSL如何在没有CDATA标记的元素中呈现html

XSL如何在没有CDATA标记的元素中呈现html,html,xml,xslt,Html,Xml,Xslt,从xml中呈现html标记时遇到问题。它以文本形式出现 XML: XSL 1.0: <xsl:for-each select="output_citation"> <xsl:sort select="//output_createddate" data-type="text" order="descending"/> <li>

从xml中呈现html标记时遇到问题。它以文本形式出现

XML:

XSL 1.0:

<xsl:for-each select="output_citation">
                        <xsl:sort select="//output_createddate"  data-type="text" order="descending"/> 

                        <li>                                
                            <xsl:value-of select="."  />                                   
                           </li>

                    </xsl:for-each>
输出为原始标记,而不是html格式:

<li>T. C. Lovejoy, Q. M. Ramasse, M. Falke, A. Kaeppel, R. Terborg, R. Zan, N. Dellby and O. L. Krivanek. (2012). Single atom
     identification by energy dispersive x-ray spectroscopy. Applied Physics Letters, 100(15), 154101.  eScholarID:213891 | DOI:10.1063/1.3701598

  </li>
这是我想要的输出 基本上,output_引文标签中的所有内容都是保留html标签的output_引文标签,但不包括:

  <li>
     T. C. Lovejoy, Q. M. Ramasse, M. Falke, A. Kaeppel, R. Terborg, R. Zan, N. Dellby and O. L. Krivanek. (2012). Single atom
        identification by energy dispersive x-ray spectroscopy. <em>Applied Physics Letters</em>, 100(15), 154101.  eScholarID:<a class="escholarid" href="http://www.manchester.ac.uk/escholar/uk-ac-man-scw:213891">213891</a> | DOI:<a class="doi" href="http://dx.doi.org/10.1063/1.3701598">10.1063/1.3701598</a>               

  </li>

此外,禁用输出转义也没有效果,因为没有CDATA包装


非常感谢

作为您可以使用的第一步,而不是复制所有子节点。但是,我建议先放置一个,然后确保有其他模板,如要复制的元素的标识转换模板:

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>
根据需要,该模板可能只列出要复制的元素

并基于您想要的编辑

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

<xsl:template match="output_citation">
  <li>
    <xsl:apply-templates/>
  </li>
</xsl:template>

这样,与此答案中的第一个模板一起,您应该可以得到所需的输出。

我认为您需要调用而不是,并且您需要一个用于所有html标记的xsl copy模板。它确实输出所有元素,但我只需要一个。如何使其仅输出此元素?感谢迄今为止显示的代码建议您将每个输出引用转换为li元素,然后在li中输出输出引用的内容。我的建议将实现这一点。您需要编辑显示上下文的问题,包括XML输入示例、XSLT和所需结果。好的,我已经在我的原始帖子中编辑了XML。基本上,我想将output_引文内容转换为li,并排除所有其他元素和output_引文标记。许多的thanks@kevmull那么您想要的确切输出是什么呢?请编辑您的问题并澄清这一点。@kevmull,如果您按照此答案给出的说明进行操作,您将获得此输出。请阅读上面第二条评论的结尾。
<xsl:template match="/">
  <xsl:apply-templates select="//output_citation"/>
</xsl:template>

<xsl:template match="output_citation">
  <li>
    <xsl:apply-templates/>
  </li>
</xsl:template>