XSLT 変換での入力と結果ノード ツリーの例
最終更新日: 2010年12月20日
適用対象: SharePoint Foundation 2010
この記事の内容
ソース ノード ツリー
thisNode パラメーター ツリー
結果ツリー
このトピックでは、Microsoft SharePoint Foundation のリスト ビュー レンダリングで使用する 3 種類のノード ツリーの例について説明します。
ソース ノード ツリーは、リストの現在のビューを定義する View スキーマ マークアップです。XSLT プロセッサが結果ツリーを構築するときに解析やスキャンを行うツリーがこのツリーです。したがって、XSLT 変換中はどの時点においても、XSLT プロセッサのコンテキスト ノードはこのマークアップのノードになります。
thisNode パラメーター ツリーは、呼び出し元のテンプレートによって各 XSLT フィールド レンダリング テンプレートに渡されます。このマークアップには、リストからの実際のデータが含まれます。フィールドをレンダリングするときに、実際のフィールド値がこのパラメーターから取得されます。thisNode パラメーター内のマークアップの詳細なリファレンスについては、「dsQueryResponse XML」を参照してください。
結果パラメーター ツリーは、XSLT 変換の結果の HTML マークアップです。
ソース ノード ツリー
以下は、ソース ノード ツリーの例です。読みやすくするために空白が追加されています。この例は、Books と呼ばれるリストの All Items ビューを定義します。このビューでは、リストの 6 つのフィールド (列) を表示できます。各フィールドは、フィールドの内部名と同じ Name 属性を持つ FieldRef 要素 (リスト) によって表されます。
<View Name="{BE704296-1D55-4F88-AD11-190FAEC79BD7}" DefaultView="TRUE" MobileView="TRUE"
MobileDefaultView="TRUE" Type="HTML" DisplayName="All Items"
Url="/sites/Contoso/Lists/Books/AllItems.aspx" Level="1" BaseViewID="1"
ContentTypeID="0x" ImageUrl="/_layouts/images/generic.png">
<Query>
<OrderBy>
<FieldRef Name="ID" />
</OrderBy>
</Query>
<ViewFields>
<FieldRef Name="Attachments" Type="Attachments" FieldType="Attachments"
DisplayName="Attachments" ID="67df98f4-9dec-48ff-a553-29bece9c5bf4" />
<FieldRef Name="LinkTitle" Type="Computed" FieldType="Computed"
DisplayName="Title" ID="82642ec8-ef9b-478f-acf9-31f7d45fbc31"
ClassInfo="Menu" ListItemMenu="TRUE" ListItemMenuAllowed="Required"
LinkToItemAllowed="Prohibited" />
<FieldRef Name="ISBN" Type="Text" FieldType="ISBN"
DisplayName="ISBN" ID="47934bd9-553c-4409-9243-d6f8140ff0c2" />
<FieldRef Name="ContentType" Type="Computed" FieldType="Computed"
DisplayName="Content Type" ID="c042a256-787d-4a6f-8a8a-cf6ab767f12d"
Sortable="FALSE" />
<FieldRef Name="Author" ImnHeader="TRUE" Type="User" FieldType="User"
DisplayName="Created By" ID="1df5e554-ec7e-46a6-901d-d85a3881cb18"
LinkToItemAllowed="Prohibited" />
<FieldRef Name="Retail_x0020_Price" Type="Currency" FieldType="Currency"
DisplayName="Retail Price" ID="ad5b9777-ee46-4a9f-85d0-d64dd5592b00" />
</ViewFields>
<RowLimit Paged="TRUE">30</RowLimit>
<Aggregations Value="Off" />
<Toolbar Type="Standard" />
<List Direction="" TemplateType="100" Title="Books" Description="" BaseType="0"
RootFolder="" Version="4" Name="{53BD7850-49CC-4747-ADED-E053659ACE79}"
Moderatedlist="0" SendToLocationName="" SendToLocationUrl="" WriteSecurity="1"
EnableMinorVersions="0" VersioningEnabled="0" ForceCheckout="0"
WorkflowsAssociated="0" DefaultItemOpen="1" RecycleBinEnabled="1"
ExternalDataList="0" OfficialFileNames="" EnableSyndication="1"
EnableContentTypes="0"/>
</View>
thisNode パラメーター ツリー
以下は、XSLT スタイル シート内の XSLT フィールド レンダリング テンプレートに渡される thisNode パラメーターの内容からの抜粋です。読みやすくするために空白が追加されています。これは、Books リストのすべての行について、コンテンツ データベースへのクエリ結果を、ページあたりの最大アイテム数 (この場合は 30) まで表します。各アイテムは Row 要素によって表されます。アイテム内の各フィールドは、フィールドの内部名と同じ名前の属性によって表されます。たとえば、Author は、[Created By] フィールドの内部名であり、Retail_x0020_Price は、[Retail Price] フィールドの内部名です。これらの属性の値は、コンテンツ データベース内の対応するフィールドの値です。たとえば、1 行目の ISBN フィールドの値は、"0-262-61107-4" です。ただし、Author フィールドの値をリンクとしてレンダリングする必要のあるマークアップは、フィールドの値が既にラップされています。
/
<dsQueryResponse ViewStyleID="" BaseViewID="1" TemplateType="100" RowLimit="30">
<Rows>
<Row ID="1"
PermMask="0x7fffffffffffffff"
Attachments="0"
Title="Theories of Truth"
FileLeafRef="1_.000"
FileLeafRef.Name="1_"
FileLeafRef.Suffix="000"
FSObjType="0"
Created_x0020_Date="0;#2010-03-01 13:16:03"
Created_x0020_Date.ifnew attribute value:
FileRef="/sites/Contoso/Lists/Books/1_.000"
FileRef.urlencode="%2Fsites%2FContoso%2FLists%2FBooks%2F1%5F%2E000"
FileRef.urlencodeasurl="/sites/Contoso/Lists/Books/1_.000"
File_x0020_Type=""
HTML_x0020_File_x0020_Type.File_x0020_Type.mapall="icgen.gif||"
HTML_x0020_File_x0020_Type.File_x0020_Type.mapico="icgen.gif"
ContentTypeId="0x0100CFB65A47C9E37B4A818F75CB08CF4062"
ISBN="0-262-61107-4"
ContentType="Item"
Author='<span class="ms-imnSpan">
<a href='javascript:;' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink'>
<img name='imnmark' class='ms-imnImg' title='' border='0' height='12' width='12'
src='/_layouts/images/blank.gif' alt='No presence information'
sip='MichiyoS@Contoso.com' id='imn_1,type=smtp'/></a>
<a onclick="GoToLink(this);return false;" href="/sites/Contoso/_layouts/userdisp.aspx?ID=1">
Michiyo Sato</a></span>'
Author.id="1"
Author.title="Michiyo Sato"
Author.span='<nobr><span>
<a onclick="GoToLink(this);return false;"
href="/sites/Contoso/_layouts/userdisp.aspx?ID=1">Michiyo Sato</a>
<img border="0" height="1" width="3" src="/_layouts/images/blank.gif"/>
<a href='javascript:;' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink'>
<img name='imnmark' class='ms-imnImg' title='' border='0' height='12' width='12'
src='/_layouts/images/blank.gif' alt='No presence information'
sip='MichiyoS@Contoso.com' id='imn_2,type=smtp'/>
</a>
</span></nobr>'
Retail_x0020_Price="$37.99"
Retail_x0020_Price.="37.9900000000000" />
<Row ... attributes omitted ... />
<Row ... attributes omitted ... />
<!-- Up to 30 Row elements total per page. -->
<Row ... attributes omitted ... />
</Rows>
</dsQueryResponse>
thisNode パラメーター内のマークアップの詳細なリファレンスについては、「dsQueryResponse XML」を参照してください。
結果ツリー
以下は、組み込み XSLT スタイル シートによって Books リストをレンダリングした結果の HTML からの抜粋です。テーブルの 1 番目のデータ行の <tr> 要素が示されています。
<tr class="ms-itmhover" iid="0,1,0">
<td class="ms-vb-itmcbx ms-vb-firstCell"><input type="checkbox" class="s4-itm-cbx" /></td>
<td class="ms-vb2"></td>
<td height="100%" onmouseover="OnChildItem(this)" class="ms-vb-title">
<div class="ms-vb itx" onmouseover="OnItem(this)" CTXName="ctx0" id="1"
Field="LinkTitle" Perm="0x7fffffffffffffff" EventType="">
<a onfocus="OnLink(this)" href="https://contoso.com/sites/Contoso/_layouts/listform.aspx
?PageType=4&ListId={53BD7850-49CC-4747-ADED-E053659ACE79}
&ID=1&ContentTypeID=0x0100CFB65A47C9E37B4A818F75CB08CF4062"
onclick="EditLink2(this,0);return false;" target="_self">
Theories of Truth
</a>
</div>
<div class="s4-ctx" onmouseover="OnChildItem(this.parentNode); return false;">
<span> </span>
<a onfocus="OnChildItem(this.parentNode.parentNode); return false;"
onclick="PopMenuFromChevron(event); return false;" href="javascript:;" title="Open Menu"></a>
<span> </span>
</div>
</td>
<td class="ms-vb2">0-262-61107-4</td>
<td class="ms-vb2">Item</td>
<td class="ms-vb2"><div align="right">$37.99</div></td>
<td class="ms-vb-user">
<span class="ms-imnSpan">
<a href='javascript:;' onclick='IMNImageOnClick(event);return false;' class='ms-imnlink'>
<img name='imnmark' class='ms-imnImg' title='' border='0' height='12' width='12'
src='/_layouts/images/blank.gif' alt='No presence information'
sip='MichiyoS@Contoso.com' id='imn_1,type=smtp'/>
</a>
<a onclick="GoToLink(this);return false;" href="/sites/Contoso/_layouts/userdisp.aspx?ID=1">
Michiyo Sato
</a>
</span>
</td>
</tr>
図 1 は、行がページでレンダリングされるときの行の外観を示しています。
図 1. Books リストの行