0

ここではかなり基本的な開発者です。現在、サーバー側で XSL と XML を変換するために mappath を使用しています。これはよく機能しますが、この BC のみを使用します。これは W3C スクール サイトで使用された例です。URL 文字列を介してパラメーターを渡すことで、ページの機能の一部を拡張しようとしています。ご存知かもしれませんが、mappath メソッドで URL パラメーターを渡すことはできません。私は一生、これを他の方法で行う方法を理解できません。Google は明確な例を提供していませんでしたし、私の wrox の本も提供していませんでした。

パラメータを XSLT に渡す方法を教えてください。

サーバー側の変換に新しい方法を使用する必要があるか、パラメーターを渡す新しい方法を理解する必要があると思います。

過去のあなたのすべての助けが私のプロジェクトに大きな違いをもたらしてくれたことに感謝します!

KG

私の現在のコード

<html><title>Report</title>
<head>
</head>
<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("/XML/XMLData/View.xml"))

'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("Data.xsl"))
'Transform file
Response.Write(xml.transformNode(xsl))
%>
</html> 
4

1 に答える 1

0

ここで変換を行っているのはマップ パスではありません。Server.MapPath が行うのは、相対パスまたは仮想パス (この場合は「/XML/XMLData/View.xml」) をサーバー上の物理ディレクトリに変換することだけです。この物理ディレクトリは、XML プロセッサによって読み込まれます。あなたの場合、ASP を使用しているため、プロセッサは MSXML です。

幸いなことに、これはパラメーターの受け渡しをサポートしていますが、少し余分な作業を行う必要があります。代わりにこのコード サンプルを試してください

<html><title>Report</title> 
<head> 
</head> 
<% 
' Load XML
set xmldoc = Server.CreateObject("Msxml2.DOMDocument")
xmldoc.async = false
xmldoc.load(Server.MapPath("/XML/XMLData/View.xml"))

' Load XSLT (as XML)
Set xsldoc = Server.CreateObject("Msxml2.FreeThreadedDOMDocument")
xsldoc.async = false
xsldoc.load(Server.MapPath("Data.xslt"))

' Set up stylesheet
set xslt = Server.CreateObject("Msxml2.XSLTemplate")
xslt.stylesheet = xsldoc

' Create a processor to do the transform
Set xslproc = xslt.createProcessor()
xslproc.input = xmldoc
xslproc.addParameter "myParam", "Hello World"
xslproc.transform()

Response.Write xslproc.output
%> 
</html> 

XSLT 自体の中で、明らかにパラメーターを指定する必要があります。これは、xsl:param要素を使用して行われます。これは、xsl:stylesheet要素内、上部近く、およびxsl:template要素の外側に配置する必要があります。

<xsl:param name="myParam" select="'Good Morning'" />

この場合のselect属性は、呼び出し元のコードによってパラメーターが設定されていない場合の既定値を指定することに注意してください。

質問asp.netにもタグを付けていることに気付きました。この場合、.Net で XSLT 変換を行うときに使用するクラスである XSLTCompliled 変換について読みたいと思うかもしれません。

于 2012-08-30T07:26:34.723 に答える