XML データは、単純な XSL スタイルシートを使用して HTML に変換できます。 XML 仕様が進化し続けるにつれて、新しいバージョンですべての人のニーズを満たす必要があるようですが、残念なことに、単純な変換を行うことが常に仕様を悩ませてきました。
ページのコンテンツを表す XML データがあり、そのコンテンツをレイアウトに変換したいとします。変換したい XML は次のとおりです:
<フォルダー>
<フォルダ>
<ファイル>
<ファイル>
<フィールド>
<フィールド>
<データ>
<長さ>50長さ>
データ>
フィールド>
フィールド>
ファイル>
ファイル>
フォルダ>
フォルダ>
このコンテンツは、フォルダー、ファイル、およびフィールドのセットを表します。各フォルダーにはファイルが含まれており、各ファイルにはデータを入力するためのフィールドが含まれています。フォルダー グループ内の各フォルダーは、TABLE の最初の行の TR 要素と TD 要素によって表されます。ファイル グループ内の各ファイルは、フォルダー TR 要素内にネストされた TABLE 要素の最初の行にある TR 要素および TD 要素として表されます。ドメイン グループ内の各ドメインは、関連ファイルの INPUT として表示されます。
このアイデアを実装するには、XML を走査し、XSL に基づいてテーブルを構築する必要があります。
この変換に使用される XSL は次のとおりです:
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:fn=" http://www.mycompany.com/mynamespace ">
function getElementCount(nodelist, what) {
varrtrn = 0;
rtrn = ノードリスト[0].parentNode.selectNodes(what).length;
return (rtrn + 1); // フィラー TD に 1 が追加されます。
}
次に、外側の TABLE と最初の TR を作成します。 TR では、XML で指定されたフォルダーごとに TD を作成します。 xsl:element タグを使用したのは、カスタム属性を追加したり、別の TD 要素の COLSPAN 属性のプロパティを設定する関数を実行したりできるためです。
フォルダーごとに必要な TD を作成した後、フォルダーごとに TR の作成を開始しました。この TR には TD を 1 つだけ追加しますが、その COLSPAN 属性をフォルダー グループ内のフォルダー タグの数に 1 を加えたものに設定します。余分なものは、固定レイアウトの TABLE 内のスペースを埋めるために使用されます。
COLSPAN を取得するには、現在のコンテキスト (ここでは「.」で指定) と計算したいノードの名前を渡します。私の関数では、現在のコンテキスト、paraentNode、および XPath クエリで指定されたノードの数を取得します。次に、関数は、TD を満たすためにこの量に 1 を加えた値を返します。
この TD では、ファイル グループ内の各ファイルを含む別の TABLE を埋め込みます。この時点からのプロセスは、外部 TABLE 変換の場合と同じです。最後のステップは、各ファイルにフィールドを追加することです。今回は埋め込みテーブルを作成せず、フィールドを現在の TD に追加しただけです。
一般的なレイアウトが完了したら、ユーザーが関連するタブをクリックするまで他のフォルダーやファイル行を非表示にするなど、ユーザー インターフェイス機能の追加を開始できます。この機能を実現するには、この機能をサポートするスクリプトを作成し、onclick xsl:attribute 要素をフォルダーおよびファイルの TD 要素に追加し、その値をスクリプト関数の名前に設定します。
最後に、共通の機能が完了したら、クラス xsl:attributes を追加し、関連する classNames を STYLE または CSS に追加して、必要な外観を得ることができます。
この例では、Web データ ソリューションの展開に使用されるファイル - フォルダー - フィールド ビューの基礎を作成します。 Microsoft の XML 仕様の詳細については、MSDN にアクセスしてください。