Примеры входного дерева узлов и результирующего дерева узлов в 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&amp;ListId={53BD7850-49CC-4747-ADED-E053659ACE79}
                                       &amp;ID=1&amp;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-преобразований

Схема View