切换到XSLT文件中的参数doctype-system

时间:2017-01-06 16:10:51

标签: xslt

你能帮助我吗,这是我在XSLT上的第一次经历:
我需要传递doctype-system参数:

您能验证我的XSLT是否正确吗?

<?xml version='1.0'?> 
<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform">
  <xsl:output method='xml' indent='no' version='1.0' encoding='utf-8' doctype-public='xxx' doctype-system="{$pURL}" />
  <xsl:strip-space elements=""/>
  <xsl:param name="pURL" select="'127.0.0.1:8080/dtd/?param'"/>
    ; 
    <xsl:template match="/">
        <xsl:variable name="param"></xsl:variable> <xsl:apply-templates />
    </xsl:template>

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

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

如果你真的想参数化xsl:param元素的这种属性,那么你需要使用像Saxon 9 PE或EE或Exselt或Altova 2017这样的XSLT 3.0处理器,你可以使用{{3} } <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl:param name="doctype-uri" static="yes" as="xs:string" select="'http://example.com/foo.dtd'"/> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" doctype-public="foo" _doctype-system="{$doctype-uri}"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> static如下:

getActionBar().hide();

对于早期版本的XSLT,您需要编写两个样式表,其中第一个采用普通参数,并使用所需属性生成第二个样式表。

通常,如果您的目标是将DTD请求重定向到本地副本,则应该查看XML目录,而不是在每个文档的DOCTYPE中实现更改。