web-dev-qa-db-ja.com

XMLファイルをXSLTファイルにリンクする方法は?

の例

http://en.wikipedia.org/wiki/XSLT

または

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

独立したXMLおよびXSLTファイルのようです。リンクする必要はありませんか?または、どういうわけかそれらを同じファイルに入れますか?それ以外の場合、1つのファイルが他のファイルからデータを取り込む方法をどのように知っていますか?

40

これをxml宣言の後に追加できます

<?xml-stylesheet type="text/xsl" href="yourxsl.xsl"?>
64
user414661

ファイルは処理を行うものではないため、1つのファイルは他のファイルを「データを吸い込む」ことを知りません。

ある種のXSLTプロセッサがこれを行います。また、何を処理するかを指示する方法が異なるため、さまざまなユースケースを処理できます。

ブラウザに表示されたときにXMLドキュメントのトランスフォーム全体をレンダリングする場合、処理命令:

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

(実際には、XSLドキュメントのMIMEタイプであるため、そのタイプの「text/xml」である必要がありましたが、これはブラウザー戦争の最後にあり、ブラウザー機能の実装は依然として、常識)。

何らかのライブラリを使用してトランスフォームをプログラムで制御している場合(クライアント側のJavaScript用のオブジェクトと、これを実行したい言語のライブラリがあります)、取得する内容を詳細に制御することができます。何によって変換されます。ここで興味深いケースがいくつかあります。

  1. コンテンツのノードとトランスフォームのノードを持つドキュメントを作成し、それらを選択してトランスフォームを実行することもできます。

  2. 複数のXML文書で同じ変換を実行している場合、何らかの「PreCompile()」メソッドなどを呼び出すほうが効率的であることが非常に多く、その呼び出しでヒットすると後続のすべての変換にメリットがあります。

  3. XSLTの最上位パラメーターに値を渡すことができます。

4
Jon Hanna

HTMLページで変換を行うこともできます。

<script type="text/javascript">
  var xml = new ActiveXObject("Microsoft.XMLDOM")
  xml.async = false
  xml.load("some_xml.xml")
  var xsl = new ActiveXObject("Microsoft.XMLDOM")
  xsl.async = false
  xsl.load("some_xsl.xsl")
  document.write(xml.transformNode(xsl))
</script>
3
Ido Weinstein

Xslt変換をXmlに適用するには、外部ツールまたはライブラリが必要です。これを行う方法はプログラミング環境によって異なりますが、.Netの場合、 XslCompiledTransform は、Xslt変換をXmlの一部(メモリ内のファイルまたはXml)に適用するために使用されるクラスです。

代わりに、Microsoftコマンドラインツール xslt.exe を使用できます-他のプログラミング言語/オペレーティングシステムで同じことを行う方法を自分で研究する必要があります。

1
Justin