Xml Web サーバー コントロール

XML ドキュメントまたは XSL Transform の結果を表示します。

<asp:Xmlid="Xml1"     Document="XmlDocument object to display"     DocumentContent="String of XML"     DocumentSource="Path to XML Document"     Transform="XslTransform object"     TransformSource="Path to XSL Transform Document"     runat="server">

解説

Xml コントロールを使用して、XML ドキュメントの内容または XSL Transform の結果を表示できます。

表示する XML ドキュメントを指定するには、次の 3 つのプロパティのいずれかを設定します。これらの 3 つのプロパティは、表示できる各種の XML ドキュメントを表します。適切なプロパティを設定することで、System.Xml.XmlDocument、XML 文字列、または XML ファイルを表示できます。XML ドキュメントを指定するためのプロパティを次の表に示します。

プロパティ 説明
Document System.Xml.XmlDocument オブジェクトを使用して、XML ドキュメントを設定します。
DocumentContent 文字列を使用して、XML ドキュメントを設定します。
メモ   通常、このプロパティは、Xml コントロールの開始 <asp:Xml> タグと終了 <asp:Xml> タグの間にテキストを挿入することにより、宣言によって設定します。
DocumentSource ファイルを使用して、XML ドキュメントを設定します。

メモ   少なくとも 1 つの XML ドキュメント プロパティを設定する必要があります。設定しないと、XML ドキュメントは表示されません。複数の XML ドキュメント プロパティを設定した場合は、最後に設定されたプロパティの XML ドキュメントが表示されます。他のプロパティのドキュメントは無視されます。

必要に応じて、XML ドキュメントを出力ストリームに書き込む前に、その書式を設定する XSL Transform ドキュメントを指定できますが、その場合は次の 2 つのプロパティのいずれかを指定します。この 2 つのプロパティは、XML ドキュメントの書式を設定するために使用できる、異なる種類の XSL Transform ドキュメントを表します。適切なプロパティを設定することで、System.Xml.Xsl.XslTransform または XSL Transform ファイルを使用して XML ドキュメントの書式を設定できます。XSL Transform ドキュメントが指定されていない場合、XML ドキュメントは既定の書式で表示されます。XSL Transform ドキュメントを指定するためのプロパティを次の表に示します。

プロパティ 説明
Transform 指定した System.Xml.Xsl.XslTransform を使用して、XML ドキュメントの書式を指定します。
TransformSource 指定した XSL Transform ファイルを使用して、XML ドキュメントの書式を設定します。

メモ   XSL Transform ドキュメントは省略できます。Transform プロパティおよび TransformSource プロパティは必ず設定する必要があるわけではありません。両方の XSL Transform ドキュメント プロパティが設定されている場合は、最後に設定されたプロパティによって、XML ドキュメントの書式設定に使用する XSL Transform ドキュメントが決まります。その他のプロパティは無視されます。

Xml クラスには、XSL Transform に省略可能な引数を指定するために使用できる TransformArgumentList プロパティも用意されています。引数は、XSLT パラメータまたは拡張オブジェクトのいずれかです。

サンプル XML ファイルを次に示します。

<People>
   <Person>
      <Name>
         <FirstName>Joe</FirstName>
         <LastName>Suits</LastName>
      </Name>
      <Address>
         <Street>1800 Success Way</Street>
         <City>Redmond</City>
         <State>WA</State>
         <ZipCode>98052</ZipCode>
      </Address>
      <Job>
         <Title>CEO</Title>
         <Description>Wears the nice suit</Description>
      </Job>
   </Person>

   <Person>
      <Name>
         <FirstName>Linda</FirstName>
         <LastName>Sue</LastName>
      </Name>
      <Address>
         <Street>1302 American St.</Street>
         <City>Paso Robles</City>
         <State>CA</State>
         <ZipCode>93447</ZipCode>
      </Address>
      <Job>
         <Title>Attorney</Title>
         <Description>Stands up for justice</Description>
      </Job>
   </Person>

   <Person>
      <Name>
         <FirstName>Jeremy</FirstName>
         <LastName>Boards</LastName>
      </Name>
      <Address>
         <Street>34 Palm Avenue</Street>
         <City>Waikiki</City>
         <State>HI</State>
         <ZipCode>98052</ZipCode>
      </Address>
      <Job>
         <Title>Pro Surfer</Title>
         <Description>Rides the big waves</Description>
      </Job>
   </Person>

   <Person>
      <Name>
         <FirstName>Joan</FirstName>
         <LastName>Page</LastName>
      </Name>
      <Address>
         <Street>700 Webmaster Road</Street>
         <City>Redmond</City>
         <State>WA</State>
         <ZipCode>98073</ZipCode>
      </Address>
      <Job>
         <Title>Web Site Developer</Title>
         <Description>Writes the pretty pages</Description>
      </Job>
   </Person>
</People>

サンプル XSL Transform ファイルを次に示します。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/People">
      <xsl:apply-templates select="Person" />
   </xsl:template>
  
   <xsl:template match="Person">
      <table width="100%" border="1">
         <tr>
            <td>
               <b>
                  <xsl:value-of select="Name/FirstName" />
                  &#160;
                  <xsl:value-of select="Name/LastName" />
               </b>
            </td>
         </tr>
         <tr>
            <td>
               <xsl:value-of select="Address/Street" /><br />
               <xsl:value-of select="Address/City" />
               , 
               <xsl:value-of select="Address/State" /> 
               <xsl:value-of select="Address/Zip" />
            </td>
         </tr>
         <tr>
            <td>
               Job Title: <xsl:value-of select="Job/Title" /><br />
               Description: <xsl:value-of select="Job/Description" />
            </td>
         </tr>
      </table>

   </xsl:template>

   <xsl:template match="bookstore">
      <!-- Prices and books -->
      <bookstore>
         <xsl:apply-templates select="book"/>
      </bookstore>
   </xsl:template>

   <xsl:template match="book">
      <book>
         <xsl:attribute name="ISBN">
            <xsl:value-of select="@ISBN"/>
         </xsl:attribute>
         <price>
            <xsl:value-of select="price"/>
         </price>
         <xsl:text>
         </xsl:text>
      </book>
   </xsl:template>

</xsl:stylesheet>

Xml コントロールを使用して、上のサンプル XSL Transform ファイルを使用して、上のサンプル XML ファイルを表示する方法を次の例に示します。サンプル XML ファイルは People.xml で、サンプル XSL Transform ファイルは Peopletable.xsl です。

<html>
<body>
   <h3>Xml Example</h3>
   <form runat="server">
      <asp:Xml id="xml1" 
           DocumentSource="people.xml" 
           TransformSource="peopletable.xsl" 
           runat="server" />
   </form>
</body>
</html>

サンプル XML ファイルおよびサンプル XSL Transform ファイルから XmlDocument オブジェクトおよび XslTransform オブジェクトを作成する方法を次の例に示します。作成されたオブジェクトを Xml コントロールで使用して、XML ドキュメントを表示します。サンプル XML ファイルは People.xml で、サンプル XSL Transform ファイルは Peopletable.xsl です。

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<html>
   <script runat="server">
      Sub Page_Load(sender As Object, e As EventArgs)
         Dim doc As XmlDocument = New XmlDocument()
         doc.Load(Server.MapPath("people.xml"))

         Dim trans As XslTransform = new XslTransform()
         trans.Load(Server.MapPath("peopletable.xsl"))

         xml1.Document = doc
         xml1.Transform = trans
      End Sub
</script>
<body>
   <h3>Xml Example</h3>
   <form runat="server">
      <asp:Xml id="xml1" runat="server" />
   </form>
</body>
</html>
[C#]
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<html>
   <script runat="server">
      void Page_Load(Object sender, EventArgs e) 
      {
         XmlDocument doc = new XmlDocument();
         doc.Load(Server.MapPath("people.xml"));

         XslTransform trans = new XslTransform();
         trans.Load(Server.MapPath("peopletable.xsl"));

         xml1.Document = doc;
         xml1.Transform = trans;
      }
   </script>
<body>
   <h3>Xml Example</h3>
      <form runat="server">
         <asp:Xml id="xml1" runat="server" />
      </form>
</body>
</html>

参照

Web サーバー コントロール | Xml クラス