javascript – 将xsl嵌入到XML文件中

前端之家收集整理的这篇文章主要介绍了javascript – 将xsl嵌入到XML文件中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将xsl嵌入到 XML文件中.这样做的原因是创建一个可以移动到不同计算机的单个文件,这将阻止移动xsl文件的需要.

xsl文件正在创建一个表并从xml中获取测试步骤以及它是通过还是失败,非常简单.
我认为,我遇到的问题是xsl有javascript,并且在IE中加载xml时会显示它.

当我用IE加载xml文件时,javascript显示在表格上方,在表格下方显示xml.

这是我的文件的布局:


<!DOCTYPE doc [
<!ATTLIST xsl:stylesheet
  id    ID  #required>
]>

<doc>    

<xsl:stylesheet id="4.1.0" 
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:user="http://www.ni.com/TestStand" 
    xmlns:vb_user="http://www.ni.com/TestStand/" >

<xsl:template match="xsl:stylesheet" />
     <xsl:text disable-output-escaping="yes">

    <msxsl:script language="vbscript" implements-prefix="vb_user">
        option explicit
        'This function will return the localized decimal point for a decimal number
        Function GetLocalizedDecimalPoint ()
            dim lDecPoint
            lDecPoint = Mid(CStr(1.1),2,1)
            GetLocalizedDecimalPoint = lDecPoint
        End Function
    </msxsl:script>
    <msxsl:script language="javascript" implements-prefix="user"><![CDATA[
        // This style sheet will not show tables instead of graphs for arrays of values if 
        // 1. TSGraph control is not installed on the machine
        // 2. Using the stylesheet in windows XP SP2. Security settings prevent stylesheets from creatign the GraphControl using scripting. 
        //     Refer to the TestStand Readme for more information.

//more javascript functions
//code to build table and insert data from the xml

</xsl:stylesheet>

<Reports>
<Report Type='UUT' Title='UUT Report' Link='-1-2008-12-3-10-46-52-713' UUTResult='Failed' StepCount='51'>

// rest of xml

</Report>

</Reports>
</doc>

解决方法

Although the W3C XSLT Spec supports embedding an XSLT stylesheet成一个XML文档,似乎IE和Firefox都不支持这个.

更新:根据Robert Niestroj的评论,多年后,在2014年10月,这适用于FireFox 33.

但是,有一个很好的选择:将XML文档嵌入到XSLT样式表中.

以下是一个例子.

包含嵌入式XML文档的XSLT样式表:

<?xml-stylesheet type="text/xsl" href="myEmbedded.xml"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>
    <xsl:variable name="vEmbDoc">
        <doc>
            <head></head>
            <body>
                <para id="foo">Hello I am foo</para>
            </body>
        </doc>
    </xsl:variable>
    <xsl:template match="para">
      <h1><xsl:value-of select="."/></h1>
    </xsl:template>
    <xsl:template match="xsl:template"/>
</xsl:stylesheet>

在IE中打开tis文件时,浏览器会显示想要的结果:

你好,我是foo

请注意,有必要包含忽略大多数XSLT指令的模板(在这种情况下,我们忽略任何< xsl:template>只是没有模板体.

猜你在找的JavaScript相关文章