次の方法で共有


XslTransform.Transform メソッド (IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

指定した args を使用して IXPathNavigable の XML データを変換し、その結果を TextWriter に出力します。

Overloads Public Sub Transform( _
   ByVal input As IXPathNavigable, _   ByVal args As XsltArgumentList, _   ByVal output As TextWriter, _   ByVal resolver As XmlResolver _)
[C#]
public void Transform(IXPathNavigableinput,XsltArgumentListargs,TextWriteroutput,XmlResolverresolver);
[C++]
public: void Transform(IXPathNavigable* input,XsltArgumentList* args,TextWriter* output,XmlResolver* resolver);
[JScript]
public function Transform(
   input : IXPathNavigable,args : XsltArgumentList,output : TextWriter,resolver : XmlResolver);

パラメータ

  • input
    IXPathNavigable インターフェイスを実装するオブジェクト。.NET Framework では、これは XmlNode (通常は XmlDocument)、または変換されるデータを含む XPathDocument になります。

  • args
    変換に対する入力として使用された名前空間限定引数を含む XsltArgumentList

  • output
    出力先の TextWriter

  • resolver
    XSLT の document() 関数を解決するために使用する XmlResolver 。これが null 参照 (Visual Basic では Nothing) の場合、document() 関数は解決されません。

    Transform メソッドが完了した後、 XmlResolver がキャッシュされていません。

例外

例外の種類 条件
XsltException XSLT 変換の処理中にエラーが発生しました。

解説

XslTransform は、XSLT 1.0 構文をサポートしています。XSLT スタイル シートには、名前空間宣言 xmlns:xsl= http://www.w3.org/1999/XSL/Transform を含める必要があります。

args は、スタイル シートに定義されている xsl:param 要素と一致します。

xsl:output 要素のエンコーディング属性は、 TextWriter に出力するときはサポートされません。どの xsl:output 属性がサポートされているかの詳細については、「 XslTransform からの出力 」を参照してください。

変換はドキュメント全体に適用されます。つまり、ドキュメント ルート ノード以外のノードに渡す場合、これによって、読み込まれたドキュメント内のすべてのノードに変換処理が行われることを防ぐことはできません。ノード フラグメントを変換するには、ノード フラグメントだけを含む XmlDocument を作成し、その XmlDocument を Transform メソッドに渡す必要があります。詳細については、「 XslTransform クラスによる XSLT プロセッサの実装 」を参照してください。

使用例

[Visual Basic, C#, C++] XML ファイルを変換し、その結果を HTML 文字列に出力する例を次に示します。この例では、 StringReader クラスと StringWriter クラスを使用して、文字列の読み取りおよび書き込みを行っています。

 
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Xml.XPath

public class Sample 

  public shared sub Main() 
   
    ' Create a string containing the XSLT stylesheet.
    Dim xsltString as String 
    xsltString = "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>" & _
    "   <xsl:template match='bookstore'>" & _
    "      <HTML>" & _
    "         <HEAD>" & _
    "            <TITLE>Book Titles</TITLE>" & _
    "       </HEAD>" & _
    "        <BODY>" & _
    "           <xsl:apply-templates select='book'/>" & _
    "        </BODY>" & _
    "     </HTML>" & _
    "   </xsl:template>" & _
    "  <xsl:template match='book'>" & _
    "     <P><xsl:value-of select='title'/></P>" & _
    "   </xsl:template>" & _
    "   </xsl:stylesheet>"

    ' Create the XslTransform object.
    Dim xslt as XslTransform = new XslTransform()

    ' Load the stylesheet.
    Dim rdr as StringReader = new StringReader(xsltString)
    xslt.Load(new XPathDocument(rdr), nothing, nothing)

    ' Transform the file and output an HTML string.
    Dim HTMLoutput as string
    Dim writer as StringWriter = new StringWriter()
    xslt.Transform(new XPathDocument("books.xml"), nothing, writer, nothing)
    HTMLoutput = writer.ToString()

  end sub
end class

[C#] 
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;

public class Sample {

  public static void Main() {
   
    // Create a string containing the XSLT stylesheet.
    String xsltString =
    @"<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
        <xsl:template match='bookstore'>
           <HTML>
              <HEAD>
                 <TITLE>Book Titles</TITLE>
             </HEAD>
             <BODY>
                <xsl:apply-templates select='book'/>
             </BODY>
          </HTML>
        </xsl:template>
        <xsl:template match='book'>
          <P><xsl:value-of select='title'/></P>
        </xsl:template>
        </xsl:stylesheet>";

    // Create the XslTransform object.
    XslTransform xslt = new XslTransform();

    // Load the stylesheet.
    StringReader rdr = new StringReader(xsltString);
    xslt.Load(new XPathDocument(rdr), null, null);

    // Transform the file and output an HTML string.
    string HTMLoutput;
    StringWriter writer = new StringWriter();
    xslt.Transform(new XPathDocument("books.xml"), null, writer, null);
    HTMLoutput = writer.ToString();

  }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Xsl;
using namespace System::Xml::XPath;

int main() {
   
   // Create a string containing the XSLT stylesheet.
   String* xsltString =
   S"<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>"
      S"<xsl:template match='bookstore'>"
         S"<HTML>"
            S"<HEAD>"
               S"<TITLE>Book Titles</TITLE>"
            S"</HEAD>"
            S"<BODY>"
               S"<xsl:apply-templates select='book'/>"
           S"</BODY>"
         S"</HTML>"
      S"</xsl:template>"
      S"<xsl:template match='book'>"
         S"<P><xsl:value-of select='title'/></P>"
      S"</xsl:template>"
   S"</xsl:stylesheet>";

   // Create the XslTransform object.
   XslTransform* xslt = new XslTransform();

   // Load the stylesheet.
   StringReader* rdr = new StringReader(xsltString);
   xslt->Load(new XPathDocument(rdr), 0, 0);

   // Transform the file and output an HTML string.
   String* HTMLoutput;
   StringWriter* writer = new StringWriter();
   xslt->Transform(new XPathDocument(S"books.xml"), 0, writer, 0);
   HTMLoutput = writer->ToString();

}

[Visual Basic, C#, C++] この例では、入力として、 books.xml というファイルを使用しています。

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

XslTransform クラス | XslTransform メンバ | System.Xml.Xsl 名前空間 | XslTransform.Transform オーバーロードの一覧 | XslTransform クラスの随意動作の実装 | XslTransform からの出力 | XmlSecureResolver | XmlResolver.Credentials