[HOW TO パイプラインでアプリケーションの XSLT 変換

文書翻訳 文書翻訳
文書番号: 320847 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

ここではパイプラインの .NET アプリケーションでの XSL 変換 (XSLT) 変換する方法について説明します。 という用語は、「パイプライン」XSLT 変換のコンテキストをソース拡張マークアップ言語 (XML) ドキュメントのデータの増分によって変換されます一連の 2 つ以上の XSLT スタイルシートの最終的な必要な出力を生成するプロセスです。 処理中に、各中間段階トランスフォーム パイプラインによって生成される出力は、最終的な変換する使用方法は、フェーズをすべて、次フェーズへの入力を出力を生成するよう使用されます。

System.Xml.Xsl System.Xml.XPath System.IO 名前空間の .NET Framework クラスは、プログラムで .NET アプリケーションでの XSLT 変換をパイプラインに使用できます。 次にこの資料の説明を実装して ASP.NET アプリケーションでの XSLT 変換をパイプラインのプロセスを調べるための指示します。 ここで示した概念の適用して他の種類の XSLT 変換のパイプラインを .NET アプリケーションで使用もできます。

作成し、サンプルの ASP.NET アプリケーションのセットアップ

  1. 新しい Microsoft Visual Basic .NET の ASP.NET Web アプリケーション プロジェクトを作成する Visual Studio.NET という名前の"XSLTPipelineDemo"(引用符は不要)。
  2. 作成し、"Employees.xml"(引用符は不要) をプロジェクトに呼び出されます XML ドキュメントを追加するには、次コードを使用:
    <?xml version='1.0'?>
    <employees>
      <employee>
        <employeeId>1</employeeId>
        <name>
          <given>Nancy</given>
          <family>Davolio</family>
        </name>
      </employee>
      <employee>
        <employeeId>2</employeeId>
        <name>
          <given>Andrew</given>
          <family>Fuller</family>
        </name>
      </employee>
      <employee>
        <employeeId>3</employeeId>
        <name>
          <given>Janet</given>
          <family>Leverling</family>
        </name>
      </employee>  
    </employees>
    					
  3. 作成し、"sortEmployees.xslt"(引用符は不要) をプロジェクトに呼び出された XSLT スタイル シートを追加するには、次コードを使用します。 このスタイル シートが Employees.xml の XML ドキュメント内でデータを並べ替える XSLT コードを含む (降順で [従業員、名、およびファミリ] ファミリ名の上で要素)。 このスタイルシートを適用すると生成される出力はソース XML データの並べ替えられたバージョン:
    <?xml version='1.0'?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    <xsl:param name="sortColumn" select="'family'"/>
    <xsl:param name="sortOrder" select="'descending'"/>
    
    
    <xsl:template match="employees">
       <employees>
    
       <xsl:apply-templates select="employee/name">  
           <xsl:sort select="./*[local-name() = $sortColumn]" order="{$sortOrder}"/>            
       </xsl:apply-templates>  
    
       </employees>
    </xsl:template> 
    
    <xsl:template match="employee/name">
      <employee>
    	  <xsl:copy-of select="parent::node()/*"/>
      </employee>  
    </xsl:template> 
    
    </xsl:stylesheet>
    					
  4. 次のコードを作成し、プロジェクトに"EmployeesHTMLTable.xslt"(引用符は不要) を呼び出されます XSLT スタイル シートの追加に使用します。 このスタイルシート ハイパーテキスト マークアップ言語 (HTML) テーブルする、ソースまたは sortEmployees.xsl XSLT スタイル シートを Employees.xml XML ドキュメントに適用すると生成される、並べ替えられた XML 内で、 Employees.xml XML ドキュメントで含まれている) 社員 XML データを変換する XSLT コードを含む:
    <?xml version='1.0'?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    <xsl:template match="employees">
    	<HTML>
    	<BODY>
    	<TABLE BORDER="1">
    	<TR>
    	  <TH>Employee ID</TH>
    	  <TH>Employee Name</TH>
    	</TR>
    
    	<xsl:for-each select="employee">
    		<TR>
      		  <TD>
    		     <xsl:value-of select="employeeId"/>
    		  </TD>
    		  <TD>
    		     <xsl:value-of select="name/family"/>, <xsl:value-of select="name/given"/>
    		  </TD>
    		</TR>
    	</xsl:for-each>
    
    	</TABLE>
    	</BODY>
    	</HTML>   
    </xsl:template> 
    
    </xsl:stylesheet>
    
    					
  5. それぞれ独立して、XSLT スタイルシートの Employees.xml ファイルに適用できます。 ソース XML の HTML テーブルの表記を生成する employeesHTMLTable.xsl を適用中に、Employees.xml ファイルでデータを並べ替える sortEmployees.xsl を適用します。 これら 2 つの XSLT 変換をパイプラインのファミリ名の順序を降順で並べ替えデータには、HTML テーブル表現を取得する (最初 sortEmployees.xsl を Employees.xml ファイルに適用を employeesHTMLTable.xsl、最初の変換によって生成された出力に適用)。
  6. コピーし、前述のパイプラインを実装する WebForm1.aspx Page_Load イベント プロシージャで次のコードを貼り付けます:
    'Load the source XML document (Employees.xml) into an XPathDocument object.
    
    Dim xmlDoc As New System.Xml.XPath.XPathDocument(Server.MapPath("employees.xml"))
    
    'Load the first stylesheet (sortEmployees.xslt) that sorts the data in employees.xml
    'into an XslTransform object.
    
    Dim xslt As New System.Xml.Xsl.XslTransform()
    xslt.Load(Server.MapPath("sortEmployees.xslt"))
    
    'Execute the first transformation and write the interim output (the sorted XML)
    'to a MemoryStream object. Using an in memory stream (as opposed to a FileStream object) 
    'to store the interim output generated by the first transformation is a better option from  
    'a performance standpoint as it avoids unnecessary disk I/O.
    
    Dim memStream As New System.IO.MemoryStream()
    xslt.Transform(xmlDoc, Nothing, memStream)
    
    'Reset the MemoryStream internal pointer to point to the 
    'beginning of the stream. This is required for the following line of 
    'code to be able to read the data from the memory stream.
    
    memStream.Position = 0
    
    'Load the interim sorted XML output in an XPathDocument object. 
    'Notice that a second XPathDocument object is created to do this. 'The reason for this is that the XPathDocument class does not implement a Load 'method (like the System.Xml.XmlDocument class) that can be used to re-load new XML data into an existing 
    'object instance. While a single XmlDocument object could have been used to execute the two pipelined 'transformations in this sample, it has not been chosen because the XPathDocument is highly optimized for XPath query 
    'execution and XSLT transformations. It is the recommended interface to use when programatically executing 
    'XSLT transformations in .NET applications.
    
    Dim interimDoc As New System.Xml.XPath.XPathDocument(memStream)
    
    'Load the second stylesheet(employeesHTMLTable.xslt)that transforms the sorted data to an HTML table
    'into the XslTransform object.
    
    xslt.Load(Server.MapPath("employeesHTMLTable.xslt"))
    
    'Execute the second transformation and stream the output directly to the 
    'ASP.Net Response object's OutputStream to display the results in the client browser.
    
    xslt.Transform(interimDoc, Nothing, Response.OutputStream)
    					
  7. 保存し、ソリューションをビルドします。

サンプル ASP.NET アプリケーションをテストします。

  1. 開始して、ブラウザーで WebForm1.aspx を表示するには、 XSLTPiplelineDemo ASP.NET アプリケーションを実行します。
  2. コード WebForm1.aspx Page_Load イベント プロシージャは、XSLT 変換を実行するおり (ファミリ名に基づいて降順) で、並べ替えを表示する HTML テーブルの形式では、出力を生成、従業員の一覧を作成します。
  3. [ブラウザー] ウィンドウ、ASP.NET アプリケーションを終了するを閉じます。

プロパティ

文書番号: 320847 - 最終更新日: 2003年9月4日 - リビジョン: 3.2
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
キーワード:?
kbhowtomaster kbbcl kbmt KB320847 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:320847
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com