使用xslt 2.0将属性设置为根元素

时间:2014-01-31 16:01:36

标签: html xslt lang xsl-stylesheet

是否可以使用xslt 2.0将xml:langlang属性放入html根元素<html>

问题是,xsl:stylesheet唯一允许的属性是:idexclude-result-prefixesextension-element-prefixesversion,当然还有xmlns }。任何xslt-processor都会忽略其他属性。

我希望有一种扩展元素<html>的方法吗?

非常感谢。

代码(本例中为xhtml):

<xsl:stylesheet 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
   xmlns:fn="http://www.w3.org/2005/xpath-functions"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:tst="http://www.ma-buwi-fh.de"
   xmlns="http://www.w3.org/1999/xhtml"
   xml:lang="de">

<xsl:output method="xhtml"
   encoding="UTF-8"
   indent="yes"
   doctype-public='-//W3C//DTD XHTML 1.1//EN'
   doctype-system='http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'
    />

结果如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:fn="http://www.w3.org/2005/xpath-functions"
  xmlns:tst="http://www.ma-buwi-fh.de"
  xmlns="http://www.w3.org/1999/xhtml">

1 个答案:

答案 0 :(得分:1)

您错误地将stylesheet元素(XSLT样式表的根元素)误认为是html(HTML文档的根元素)。

您引用的属性是stylesheet元素允许的属性。请参阅规范here的相关部分。

因此,请在您输出的lang元素上指定html属性,而不是stylesheet元素。

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

  <xsl:template match="/">
    <html lang="EN">
      <!--HTML content-->
    </html>
  </xsl:template>
</xsl:stylesheet>

如果您希望任何人诊断您的实际问题,您必须显示您的XSLT代码。