Html 使用XSLT保留XML中的格式标记

Html 使用XSLT保留XML中的格式标记,html,xml,xslt,tags,formatting,Html,Xml,Xslt,Tags,Formatting,我必须使用XSLT显示XML文档,但我希望应用原始XML文档中的和HTML标记。例如,XML中的p标记将创建一个新段落。实现这一目标的最佳方式是什么? XML和XSLT代码发布在下面 编辑:澄清了原来的问题 <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="tour.xsl"?> <cars> <car> <desc

我必须使用XSLT显示XML文档,但我希望应用原始XML文档中的
HTML标记。例如,XML中的p标记将创建一个新段落。实现这一目标的最佳方式是什么? XML和XSLT代码发布在下面

编辑:澄清了原来的问题

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/xsl" href="tour.xsl"?>
<cars>
   <car>
      <description>
        <p><i>There is some text here</i> There is some more text here</p>
        <p>This should be another paragraph</p>
        <p>This is yet another paragraph</p>
      </description>
   </car>
</cars>

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

    <xsl:template match="/">
        <html>
            <head>
                <title>Title</title>
            </head>
            <body>
                <xsl:value-of select="car"/><p/>       
            </body>
        </html>
    </xsl:template>
 </xsl:stylesheet>`

这里有一些文字这里还有一些文字

这应该是另一段

这是另一段

标题

`


您可以扩展模板以复制
p
元素,如下所示:

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

  <xsl:template match="/">
    <html>
      <head>
        <title>Title</title>
      </head>
      <body>
        <xsl:for-each select="/cars/car">
          <xsl:for-each select="description/p">
            <xsl:copy-of select="."/>
          </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
以下是IE 11中输出的屏幕截图:


更新2 我尝试了模板解决方案,但它仍然返回未格式化的文本 一行

如果给IE 11一个没有
XML样式表的XML文件
PI

<?xml-stylesheet type='text/xsl' href='tour.xsl'?>
因此无法找到:

注意:按F-12以显示控制台

然后,如果单击“允许阻止内容”按钮:


您会看到诊断消息
tour\u not\u FIND.xsl
not found如果您解决了IE找不到XSLT文件的问题,那么您应该在浏览器中看到XSLT文件的格式化结果。

您的实际问题可以用这样一个样式表来回答,它使用
应用模板

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

    <xsl:template match="/">
        <html>
            <head>
                <title>Title</title>
            </head>
            <body>
                <xsl:apply-templates select="/cars/car/description/*"/>
                <p/>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
 </xsl:stylesheet>

谢谢你的回复。是否有一种方法可以应用这些标记,使“i”标记之间的文本以斜体书写,“p”标记开始一个新段落?尝试了两种方法,但由于某些原因,格式没有应用。还有其他建议吗?我可能遗漏了其他内容,抱歉,我是XML新手。您是想在浏览器中运行XSLT还是通过独立处理器运行XSLT?我正在尝试在komodo的内置浏览器中运行,并再次感谢您的回复。我尝试了模板解决方案,但它仍然在一行中返回未格式化的文本。上面的IE截图正是我想要实现的,但在komodo和IE中尝试后,我得到了未格式化的文本。如果您有任何可能的解决方案,请发布它们。当IE找不到XSLT文件时,将出现未匹配的文本。答案更新了进一步的细节。
<?xml-stylesheet type='text/xsl' href='tour.xsl'?>
<?xml-stylesheet type='text/xsl' href='tour_CANNOT_FIND.xsl'?>
<?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0"        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="4.0" indent="yes"/>

    <xsl:template match="/">
        <html>
            <head>
                <title>Title</title>
            </head>
            <body>
                <xsl:apply-templates select="/cars/car/description/*"/>
                <p/>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
 </xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0"        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="4.0" indent="yes"/>

    <xsl:template match="/">
        <html>
            <head>
                <title>Title</title>
            </head>
            <body>
                <xsl:apply-templates select="/cars/car/*"/>
                <p/>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="description">
        <h1>Subtitle</h1>
        <xsl:apply-templates select="*"/>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
 </xsl:stylesheet>