6

xslをXMLファイルに埋め込もうとしています。これを行う理由は、別のコンピューターに移動できる単一のファイルを作成するためです。これにより、xslファイルを移動する必要がなくなります。

xslファイルはテーブルを作成し、xmlからテストステップを取得し、それが成功したか失敗したかを非常に簡単に示しています。
私が抱えている問題は、xslにjavascriptがあり、XMLがIEにロードされたときに表示されることだと思います。

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>
4

3 に答える 3

11

W3C XSLT仕様はXSLTスタイルシートのXMLドキュメントへの埋め込みをサポートしていますが、IEとFirefoxはこれをサポートしていないようです。

更新:Robert Niestrojのコメントによると、数年後の2014年10月、これはFireFox33で機能します。

ただし、適切な代替手段があります。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:outputomit-xml-declaration = "yes" />
    <xsl:variable name = "vEmbDoc">
        <doc>
            <head> </ head>
            <本体>
                <paraid="foo">こんにちは私はfooです</para>
            </ body>
        </ doc>
    </ xsl:variable>
    <xsl:template match = "para">
      <h1> <xsl:value-ofselect="。"/></ h1>
    </ xsl:template>
    <xsl:template match = "xsl:template" />
</ xsl:stylesheet>

tisファイルをIEで開くと、必要な結果がブラウザに表示されます。

こんにちは私はfooです

XSLT命令のほとんどを無視するテンプレートを含める必要があることに注意<xsl:template>してください(この場合、テンプレート本体がないだけで無視しています。

于 2008-12-11T22:28:25.207 に答える
0

スタイルシートの埋め込みは、IE を除くほとんどのブラウザーで可能です。以下の投稿で説明と例への参照を見つけてください。

IE6/7/8 は、デフォルトで埋め込みスタイルシートをサポートしていません。

ここから、IE が埋め込みスタイルシートを処理できるようにする回避策を使用することをお勧めします。

http://www.biglist.com/lists/lists.mulberrytech.com/xsl-list/archives/201001/msg00390.html

于 2010-01-25T18:29:33.237 に答える
0

あなたのスタイルシートは msxsl を利用しているので、IE ブラウザー用のスタイルシート埋め込みを有効にするための以前の手法は問題ないはずです。

すべてのブラウザで機能するスタイルシートの埋め込みが必要な場合は、すべてのブラウザにスタイルシートを埋め込む技術サポートを使用することをお勧めします。

于 2010-02-28T01:34:18.080 に答える