Примеры входного дерева узлов и результирующего дерева узлов в XSLT-преобразованиях
Дата последнего изменения: 20 декабря 2010 г.
Применимо к: SharePoint Foundation 2010
В этой статье
Исходное дерево узлов
Дерево параметра thisNode
Дерево результатов
В этом разделе приведены примеры трех видов деревьев узлов, используемых для визуализации списков в Microsoft SharePoint Foundation.
Исходное дерево узлов — это разметка схемы представления, определяющая текущее представление списка. Именно это дерево обрабатывается и обходится процессором XSLT при построении дерева результатов. Следовательно, в любой момент в ходе XSLT-преобразования узел контекста процессора XSLT — это узел в этой разметке.
Дерево параметра thisNode передается каждому шаблону визуализации XSLT с помощью вызова шаблона. Эта разметка содержит фактические данные из списка. При визуализации поля фактическое значение берется из этого параметра. Полную справку о разметке в параметре thisNode см. в разделе XML-разметка dsQueryResponse.
Дерево параметров результатов — это результат XSLT-преобразования в виде HTML-разметки.
Исходное дерево узлов
Ниже приведен пример исходного дерева узлов с пробелами, добавленными для удобства восприятия. Оно определяет представление "All Items" (Все элементы) списка Books. В этом представлении шесть из полей (столбцов) списка являются видимыми. Каждый из них представлен элементом Элемент FieldRef (List), атрибут Name которого — это внутреннее имя поля.
<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
Ниже приведен фрагмент содержимого параметра thisNode, переданного в шаблон визуализации поля XSLT в таблице XSLT-стилей, с пробелами, добавленными для удобства восприятия. Он представляет результаты запроса к базе данных контента для получения всех строк списка Books до максимального числа элементов на страницу, которое в данном случае равно 30. Каждый элемент списка представлен элементом Row. Каждое поле элемента списка представлено атрибутом, имя которого является внутренним именем поля. Например, Author — это внутреннее имя поля Created By (Создано), а Retail_x0020_Price — это внутреннее имя поля Retail Price (Розничная цена). Значениями этих атрибутов являются значения соответствующих полей в базе данных контента, например, поле 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 см. в статье XML-разметка dsQueryResponse.
Дерево результатов
Ниже приведен фрагмент HTML-разметки, полученной в результате обработки списка Books с помощью встроенных таблиц XSLT-стилей. Для первой строки данных таблицы показан элемент <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.
См. также
Концепции
Обзор систем отображения представлений списков с помощью XSLT-преобразований