Freigeben über


Beispiele von Eingabe- und Ergebnisknotenstrukturen bei XSLT-Transformationen

Letzte Änderung: Montag, 20. Dezember 2010

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Quellknotenstruktur
"thisNode"-Parameterstruktur
Ergebnisstruktur

Dieses Thema enthält Beispiele der drei Arten von Knotenstrukturen, die beim Rendern von Listenansichten in Microsoft SharePoint Foundation verwendet werden.

  • Die Quellknotenstruktur ist das Ansichtsschema-Markup, das die aktuelle Ansicht einer Liste definiert. Dies ist die Struktur, die der XSLT-Prozessor beim Erstellen der Ergebnisstruktur analysiert und durchläuft. Demzufolge ist der Kontextknoten des XSLT-Prozessors zu einem beliebigen Zeitpunkt während der XSLT-Transformation ein Knoten in diesem Markup.

  • Die "thisNode"-Parameterstruktur wird an jede XSLT-Feldrendervorlage durch die aufrufende Vorlage übergeben. Dieses Markup enthält die tatsächlichen Daten in der Liste. Beim Rendern eines Felds wird der tatsächliche Feldwert aus diesem Parameter abgerufen. Eine vollständige Referenz des Markups im thisNode-Parameter finden Sie unter dsQueryResponse-XML.

  • Die Ergebnisparameterstruktur ist das Ergebnis der XSLT-Transformation in HTML-Markup.

Quellknotenstruktur

Es folgt ein Beispiel einer Quellknotenstruktur, der zur besseren Lesbarkeit Leerzeichen hinzugefügt wurden. Sie definiert die Ansicht All Items der Liste Books. Sechs der Felder (Spalten) der Liste werden in dieser Ansicht angezeigt. Jedes davon wird mithilfe eines FieldRef-Element (Liste) dargestellt, dessen Name-Attribut der interne Name des Felds ist.

<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"-Parameterstruktur

Es folgt ein Auszug aus dem Inhalt eines thisNode-Parameters, der an eine XSLT-Feldrendervorlage in einem XSLT-Stylesheet übergeben wird. Zur besseren Lesbarkeit wurden Leerzeichen hinzugefügt. Der Auszug stellt das Ergebnis einer Abfrage der Inhaltsdatenbank nach allen Zeilen der Liste Books bis zur maximalen Elementanzahl pro Seite dar, in diesem Fall 30. Jedes Element wird von einem Row-Element dargestellt. Jedes Feld im Element wird von einem Attribut dargestellt, dessen Name der interne Name des Felds ist. Author ist z. B. der interne Name des Felds Created By und Retail_x0020_Price der interne Name des Felds Retail Price. Die Werte dieser Attribute sind die Werte der entsprechenden Felder in der Inhaltsdatenbank. Der Wert des Felds ISBN in der ersten Zeile lautet beispielsweise "0-262-61107-4". Beachten Sie, dass das Markup, das zum Rendern des Werts des Felds Author als Link benötigt wird, bereits in einem Wrapper um den Feldwert enthalten ist.

/
  <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>  

Eine vollständige Referenz des Markups im thisNode-Parameter finden Sie unter dsQueryResponse-XML.

Ergebnisstruktur

Der folgende Code ist ein Auszug aus dem HTML-Code, der aus dem Rendern der Liste "Books" durch die vordefinierten XSLT-Stylesheets resultiert. Das <tr>-Element der ersten Datenzeile der Tabelle wird angezeigt.

<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>

Abbildung 1 zeigt, wie die Zeile aussieht, wenn sie auf der Seite gerendert wird.

Abbildung 1. Eine Zeile der Liste "Books".

Zeile in einer Bücherliste

Siehe auch

Konzepte

Übersicht über das XSLT-System des Rendering von Listenansichten

View-Schema