16

ブラウザーを使用して XML (Google Chrome または IE7) を変換する場合、URL を介して XSLT スタイルシートにパラメーターを渡すことは可能ですか?

例:

data.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
<root>
    <document type="resume">
        <author>John Doe</author>
    </document>
    <document type="novella">
        <author>Jane Doe</author>
    </document>
</root>

サンプル.xsl

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

    <xsl:output method="html" />
    <xsl:template match="/">
    <xsl:param name="doctype" />
    <html>
        <head>
            <title>List of <xsl:value-of select="$doctype" /></title>
        </head>
        <body>
            <xsl:for-each select="//document[@type = $doctype]">
                <p><xsl:value-of select="author" /></p>
            </xsl:for-each>
        </body>
    </html>
</<xsl:stylesheet>
4

3 に答える 3

7

残念ながら、クライアント側のみでパラメーターを XSLT に渡すことはできません。Web ブラウザーは、XML から処理命令を取得します。XSLT で直接変換します。


クエリ文字列 URL を介して値を渡し、JavaScript を使用して動的に読み取ることができます。ただし、ブラウザーが既に XML/XSLT を変換しているため、これらを XSLT (XPath 式) で使用することはできません。これらは、レンダリングされた HTML 出力でのみ使用できました。

于 2008-09-16T22:39:41.250 に答える
6

パラメーターを属性として XML ソース ファイルに追加し、それをスタイルシートの属性として使用するだけです。

xmlDoc.documentElement.setAttribute("myparam",getParameter("myparam"))

また、JavaScript 関数は次のとおりです。

//Get querystring request paramter in javascript
function getParameter (parameterName ) {

   var queryString = window.top.location.search.substring(1);

   // Add "=" to the parameter name (i.e. parameterName=value)
   var parameterName = parameterName + "=";
   if ( queryString.length > 0 ) {
      // Find the beginning of the string
      begin = queryString.indexOf ( parameterName );
      // If the parameter name is not found, skip it, otherwise return the value
      if ( begin != -1 ) {
         // Add the length (integer) to the beginning
         begin += parameterName.length;
         // Multiple parameters are separated by the "&" sign
         end = queryString.indexOf ( "&" , begin );
      if ( end == -1 ) {
         end = queryString.length
      }
      // Return the string
      return unescape ( queryString.substring ( begin, end ) );
   }
   // Return "null" if no parameter has been found
   return "null";
   }
}
于 2009-03-11T15:25:53.930 に答える
4

変換がクライアント側であっても、XSLT サーバー側を生成できます。

これにより、動的スクリプトを使用してパラメーターを処理できます。

たとえば、次のように指定できます。

<?xml-stylesheet type="text/xsl"href="/myscript.cfm/sample.xsl?paramter=something" ?>

次に、myscript.cfm で XSL ファイルを出力しますが、クエリ文字列パラメーターを処理する動的スクリプトを使用します (これは、使用するスクリプト言語によって異なります)。

于 2008-09-15T19:34:24.793 に答える