是否有可能将xml xsl嵌入到内联问题的html中

时间:2016-07-20 06:52:20

标签: html xml xslt

我想知道是否有可能出现这样的情况:我可以将与xsl链接的内联xml放入html的主体中,例如:

<html>
 <body>
  text
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <?xml-stylesheet type="text/xsl" href="articles.xsl"?>
  <articles>
   <article title="title"/>
  </articles>
  text
 </body>
</html>

2 个答案:

答案 0 :(得分:0)

第2.4节

http://www.w3.org/TR/2012/NOTE-html-xml-tf-report-20120209/

建议有两种方法

(a)将XML放在script元素

(b)使用XHTML。

不建议在HTML中直接嵌套XML,因为HTML解析器会将XML视为错误的HTML,并尝试修复它。

答案 1 :(得分:0)

正如Michael Kay建议的那样,您可以在XHTML中嵌入XML并将样式表应用于整个文档。然后,您可以将XSL转换应用于整个文档,将标识转换应用于所有HTML元素,并将特定模板应用于嵌入的非HTML元素。

以下是一个例子:

输入XHTML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ie8fix.xsl"?>
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>test</title>
  </head>
  <body>
    text
    <articles xmlns="">
      <article title="title"/>
    </articles>
    text
  </body>
</html>

<强> XSLT

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

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

  <xsl:template match="articles">
    <div class="articles">
      <h1>articles</h1>
      <xsl:apply-templates select="article" mode="transform"/>
    </div>
  </xsl:template>

  <xsl:template match="article" mode="transform">
    <article><!-- HTML5 article element -->
      <h2><xsl:value-of select="@title"/></h2>
      <xsl:apply-templates select="node()" mode="transform"/>
    </article>
  </xsl:template>
</xsl:stylesheet>

输出XHTML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ie8fix.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
      <title>test</title>
  </head>
  <body>
    text
    <div class="articles">
         <h1>articles</h1>
         <article>
            <h2>title</h2>
         </article>
      </div>
    text
  </body>
</html>

另一种选择是在使用JavaScript和XSLTProcessor加载页面后转换XML。