XML を使用した Web サイトの合理化

 

Chris Lovett
Microsoft Corporation

2000 年 1 月 17 日

内容

XML スキーマの設計
コンテンツ開発
デザイン
Web 公開
グローバリゼーション
ビジネス開発
まとめ
リファレンス

XML を使用して、Web サイトに蓄積される HTML のもつれた混乱を分解し、チームの異なるメンバーが並行して作業できる管理可能なチャンクに変換して、より説得力のあるサイトを実現できます。 大規模な Web サイトには、サイトのすべての側面で作業するさまざまなチームのユーザーがいます。 このようなチームは、XML コンテンツを生成するコンテンツ開発、XSL を使用してサイトの外観を確立するデザイン、実際の発行プロセスを制御する Web 発行、グローバル化、世界中の多くの読者への到達に努めるビジネス開発、ビジネス間のパートナーの機会に焦点を当てたビジネス開発というグループで構成されています。 次の図は、これらの異なるグループ間のワークフローを示しています。

具体的な例を選び、これらの異なるチームがどのように連携して役に立つものを構築してデプロイするかを調べてみましょう。 私が選ぶ例は、MSDNで詳しく書かれているものです。 これは、目 次 (TOC) と呼ばれる msdn.microsoft.com メニューです。 以下の MSDN 記事のリファレンスを参照してください。

XML スキーマの設計

プロセス全体を開始するには、すべてのユーザーを集めて、開発および展開するコンテンツに適した XML スキーマを把握します。 このスキーマは、すべての異なるチーム間のインターフェイスになり、Web サイトにますます多くの機能が追加されるにつれて、おそらく時間の経過と共に進化します。 TOC の例では、次のような初期スキーマを非常に単純にすることができます。

<Schema xmlns="urn:schemas-microsoft-com:xml-data">
    <AttributeType name="href"/>
    <AttributeType name="title"/>
    <ElementType name="item" model="closed">
        <attribute type="href"/>
        <attribute type="title" required="yes"/>
        <element type="item" maxOccurs="*" minOccurs="0"/>
    </ElementType>
    <ElementType name="toc" model="closed" content="eltOnly">
        <element type="item" maxOccurs="*" minOccurs="0"/>
    </ElementType>
</Schema>

スキーマの読み取りに慣れていないユーザーにとって、このスキーマでは、toc> 要素は 0 個以上<の項目>要素で構成され、各項目にはオプションの href 属性と必須の title 属性があることを示<しています。 また、 <item> 要素には 0 個以上の子項目を含めることができます。 Microsoft インターネット エクスプローラー 5 の Microsoft® XML パーサー (Msxml.dll) によって提供される XML スキーマのサポートの詳細については、「XML スキーマ開発者ガイド」を参照してください。

上記のスキーマに準拠する TOC の例を次に示します。

<toc xmlns="x-schema:toc-schema.xml">
  <item title="General Information">
    <item href="https://msdn.microsoft.com/xml/general/intro.asp" title="Introduction"/>
    <item href="https://msdn.microsoft.com/xml/general/whyxml.asp" title="Why XML?"/>
    <item href="https://msdn.microsoft.com/xml/general/benefits.asp" title="Benefiting from XML"/>
  </item>
  <item title="XML Reference">
    <item href="https://msdn.microsoft.com/xml/reference/xmldom/start.asp" title="XML DOM Reference"/>
    <item href="https://msdn.microsoft.com/xml/reference/schema/start.asp" title="XML Schema Reference"/>
    <item href="https://msdn.microsoft.com/xml/reference/schema/datatypes.asp" title="XML Data Types Reference"/>
    <item href="https://msdn.microsoft.com/xml/reference/xmldom/error-messages.asp" title="XML Error Messages"/>
  </item>
</toc>

単純ですが、このスキーマは、さまざまなユーザーがそれをどのように使用できるかを調べるのに十分です。 スキーマ設計は、プロセスの最も難しい部分です。 正しく行われると、その後に来るすべてのもののための優れた基盤を築きます。 BizTalk.org では、事前に構築されたスキーマにアクセスできるようにすることで、この問題に対処しています。 おそらく、必要なスキーマは他のユーザーによって既に定義されています。その場合は、BizTalk スキーマ リポジトリにあります。

コンテンツ開発

スキーマが設定されると、コンテンツ開発者はコンテンツの作成とレビューを進めることができます。 コンテンツ開発には、実際には、最初にコンテンツを作成し、そのコンテンツを XML 形式にするという 2 つの手順が含まれています。 これら 2 つの手順を効率化する 1 つの方法は、コンテンツを XML で直接作成できるツールを作成者に提供することです。 コンテンツが生成されたら、Web 発行チームに配信できます。 大規模な Web サイトの場合、TOC コンテンツを開発するタスクは、会社全体の多くのユーザーに配布される場合もあります。 上記の XML は非常にクリーンでシンプルであるため、この場合は適切に機能します。これは、誰でも簡単な.xml ファイルとして編集して渡すことが比較的簡単であるためです。 チーム メンバーは、簡単なインターネット エクスプローラー 5 つのスタイル シートと、XML ドキュメント オブジェクト モデル (DOM) を使用して記述された Jscript® 検証コントロールを使用して、それを表示して検証することもできます。

デザイン

このデータを提示する最適な方法 (ユーザーの操作に適した外観) は、コンテンツとは完全に独立して作業できます。 グラフィック デザイナーは、開発者と協力して、XML データを HTML に変換する XSL スタイル シートを考え出すことができます。また、コンテンツ開発者の生産性に影響を与 えず 、1 日に 100 万回の外観を調整できます。

デザイナーは、これらの XSL スタイル シートを Web サイトの発行元に渡し、XSL と XML を使用して最終的な HTML を生成します。 XSL は、デザイナーと Web サイトの発行元の間のインターフェイスです。 デザイナーが作成する可能性のある内容の例を次に示します。

基本的な入れ子になった順序付けされていないリスト ビュー

このビューはプレーンな HTML 3.0 です。下位レベルの HTML クライアントに最適です。 toc-simple.xsl を参照してください

対話型リスト ビュー

このビューは基本ビューと同じように見えますが、このビューではユーザーがクリックした項目が対話的に展開および折りたたまれる点が除きます。 (このスナップショットでは、ユーザーが [XSL 参照] 項目をクリックしました)。 toc-int.xsl を参照してください

洗練された MSDN ルック アンド フィール

このビューでは、リストが目次のように見えるように、もう少し洗練されています。 DHTML と CSS の高度な機能を使用し、単純な箇条書きの代わりにアイコン画像を表示します。 そのため、インターネット エクスプローラー 4.0 や 5 などのリッチ HTML 4.0 クライアントを対象とします。 (このスナップショットでは、ユーザーが [XML 参照] 項目をクリックしました)。 toc-final.xsl を参照してください

インターネット エクスプローラー 5 を実行している場合は、最終的な結果を直接操作できます。 「XML ベースの TOC」を参照してください。 (XML を表示するには、必ず [表示] メニューから [ソース] を選択してください)。

Web 公開

Web サイト発行チームは、次の最大限の役割を担います。

  • サイトの可用性とパフォーマンス
  • Web サイトを表示できるさまざまな HTML クライアントの数
  • 高性能ブラウザーを使用したクライアントの豊富なエクスペリエンス

発行チームが最初に行うべきことは、XML コンテンツに対する "検証" パスで、スキーマに準拠していることを確認することです。 そうでない場合、発行チームはそれをコンテンツ開発者に送り返します。

これにより、Web サイト発行チームが "コンテンツのマッサージ" ビジネスから抜け出し、最先端の Web サイトを作成するビジネスに移行できるようになります。 機能強化には、ブラウザー スニッフィングの有効化、サイトのパフォーマンスの向上、サイトの動的化などが含まれます。

ブラウザー スニッフィング

すべてのブラウザーの種類で最大限のリーチを実現するために、Web 発行チームは、クライアントに合わせたブラウザー スニッフィングとロジックを有効にすることができます。 発行チームは、Active Server Pages (ASP) スクリプトを使用して、クライアント ブラウザーの種類をスニッフィングできます。 次に、ブラウザーに基づいて、サーバーで XSL 処理を有効にして単純な HTML をクライアントに送信するか、クライアント ブラウザーがインターネット エクスプローラー 5 の場合は XML を送信するかを決定します。 前の「デザイン」セクションでは、Web 発行チームが XML と XSL を使用して HTML を生成する方法を確認しました。 ただし、インターネット エクスプローラー バージョン 5 以降では、クライアントで XML を解析できます。 これらのブラウザー バージョンに XML を直接送信することで、チームはより洗練されたユーザー エクスペリエンスを提供できます。

インターネット エクスプローラー 5 で XML を表示できるようにするには、次のように、XML TOC ファイルの先頭に処理命令を追加するだけです。

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

Web サーバーで実行されている次の ASP スクリプトは、クライアント ブラウザーの種類をスニッフィングします。 インターネット エクスプローラー 5 の場合、サーバーは上記の XSL 命令を使用して TOC XML ファイルを直接クライアントに送信します。 それ以外の場合は、サーバー上で XML を HTML に変換し、HTML をクライアントに送信します。

<%@LANGUAGE=JSCRIPT%>
<%
    var useragent = ""+Request.ServerVariables("HTTP_USER_AGENT");
    if (useragent.indexOf("MSIE 5") > 0)
    {
        Response.Redirect("toc.xml");
    }
    else
    {
        var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
        xmldoc.async = false;
        xmldoc.load(Server.MapPath("toc.xml"));
        var xsldoc = new ActiveXObject("Microsoft.XMLDOM");
        xsldoc.async = false;
        xsldoc.load(Server.MapPath("toc-simple.xsl"));
        Response.Write(xmldoc.transformNode(xsldoc));
    }
%>

その他のパフォーマンスの向上

Web 発行チームは、次のようなパフォーマンスの向上を実装できます。

  • この ASP ページにアクセスするすべてのクライアントが同じ XSL スタイル シート DOM ドキュメントを共有できるように、XSL スタイル シートを共有スコープに格納します。 これにより、スループットが 30 ~ 40% 向上します。
  • よりスマートな XSL キャッシュ アルゴリズムを含む C++ XSL ISAPI 拡張機能への切り替え。 これにより、パフォーマンスがさらに向上する可能性があります。
  • XSL をバッチ モードで HTML に前処理して、XSL 処理をその場で行う必要がないようにします。 インターネット インフォメーション サービス (IIS) サーバーが静的 HTML ページを返すだけであるため、スループットが大幅に向上する可能性があります。 これは、より動的なコンテンツ (株価、時刻、その他の重要なデータなど) がある場合は機能しません。

ダイナミック マテリアル

Web 発行チームは、パフォーマンスの向上に加えて、サイトをより動的にすることに関心がある場合があります。 すべての XML TOC データをデータベースに格納して、コンテンツ開発者がデータベース内の 1 つの項目を変更するとすぐに、Web 上の "ライブ" TOC がその変更をすぐに反映するようにしたい場合があります。 ActiveX® Data Objects (ADO) XML 永続化機能を使用して、このデータベース データを XSL 経由で処理するために XML に戻す可能性があります。 また、今後のSQL Server/XML 統合機能を使用することもできます。

最後に、Web 発行チームには、Web サイト全体の管理に役立つ他のツールが用意されているため、XML DOM を使用してスクリプト コードを記述して、XML TOC コンテンツをこれらのツールに結び付ける必要がある場合があります。

Web 発行チームは、コンテンツ開発チームとデザイン チームと完全に並行してこれを行っていることに注意してください。

グローバリゼーション

グローバリゼーションでは、Web サイトの重要な部分を異なる言語に変換して、言語の壁を越えてサイトのリーチを最大化します。 グローバリゼーション チームは、TOC コンテンツを異なる言語に翻訳したい場合があります。 チームは TOC エントリについてのみ心配する必要があるため、単純な XML の翻訳は複雑な HTML ページを翻訳するよりもはるかに簡単です。 すべての XML/XSL 処理は Unicode ベースであるため、HTML を生成する XSL スタイル シートは、どの言語でも問題なく機能しますが、一部の設計上の考慮事項は、単語の長さや読み取り方向の違いに対応する必要がある場合があります。

また、グローバル化チームは、その XSL スタイル シートに他のビジュアル DHTML 要素 (テキスト付きのボタンなど) が含まれている場合に、デザイン チームによって生成された XSL スタイル シートを翻訳しなければならない場合もあります。 この場合、一部の Web サイトでは、ローカライズ可能なすべての文字列が別々の XML ファイルに格納されます。 グローバリゼーションの場合、これらの個別のファイルが読み込まれ、XSL 処理中にこれらの文字列が置き換えられます。 結果は、特定のクライアント ブラウザーの種類を対象とし、その場でクライアント言語用に完全にローカライズされた HTML ページになります。 これにより、静的 HTML の量が大幅に削減される可能性があります。 Microsoft.com サイト の www.microsoft.com は、この手法を使用して数万個の静的 HTML ページを 100 個未満の XML ファイルに削減できると報告しました。

ビジネス開発

最後に、ある付加価値サービスを提供するサードパーティベンダーと目次情報を共有するビジネスチャンスを社内の誰かが特定したとします (電子メールプロモーションで Web サイトの関連部分を公開するなど)。 eコマース チームは、TOC 形式をこれらの機会に活用するために必要な標準的な企業間形式に変換する XSL スタイル シートを構築できます。

この例では、TOC の XML スキーマを改善する必要がある場合があります。 おそらく、スキーマ開発者は、"id" 属性を追加して、電子メールの昇格によってメニュー内のアイテムに対する電子メール クエリが発生したときに、アイテム "id" を 属性で使用できるようにする必要があります。 プロモーションの送信後にアイテムのタイトルがローカライズまたは変更された場合でも、"id" 属性は、顧客が必要としていた情報を正確に伝えることができます。 XML は、このような増分絞り込みを処理する際に素晴らしいです。これは、スキーマに対してこの変更を行った後でも、古いスキーマに基づいて構築されたすべての XSL やその他のコードが引き続き機能するためです。 ここでも、 http://www.biztalk.org/ は、このような問題に関する情報を得るための優れたリソースです。

まとめ

そこで、XML、XSL、DHTML、CSS、ASP を使用したエンド ツー エンドのソリューションについて説明しました。 Web チーム全体が XML を使用して生産性を向上させ、さまざまなユーザーが Web サイトのさまざまな側面で並行して作業できるようにする方法について説明しました。 Web サイトで作業しているユーザーが 1 人または 2 人しかいない場合でも、生産性を向上させることができます。 この目次の例を、サイト上で公開する他のすべての種類のデータに外注する場合は、データを公開する他の方法 (電子メールの情報、印刷されたニュースレターなど) を検討し、他の種類の Web クライアント (Microsoft® WebTV®、パーム サイズ PC など) を利用する方法を検討すると、 www.microsoft.com が XML を迅速に採用している理由を理解し始めることができます。

リファレンス

この記事では、例として XML TOC を使用しました。 XML TOC をビルドして実装する方法の詳細については、次の記事を参照してください。

"DXML": XML から DHTML への TOC の取得 (1999 年 4 月)

"DXML" Redux: XML から動的 HTML メニューを作成する (1999 年 5 月)

アクションの "DXML" : サイトに DHTML メニューと TOC を実装する (1999 年 6 月)

Chris Lovett は、Microsoft の XML チームのプログラム マネージャーです。