Esempio: specifica della direttiva HIDEExample: Specifying the HIDE Directive

Nell'esempio seguente viene illustrato l'utilizzo della direttiva HIDE .This example illustrates the use of the HIDE directive. Questa direttiva si rivela utile quando si desidera la restituzione di un attributo in base al quale ordinare le righe nella tabella universale restituita dalla query, ma non si desidera che tale attributo venga visualizzato nel documento XML finale.This directive is useful when you want the query to return an attribute for ordering the rows in the universal table that is returned by the query, but you do not want that attribute in the final resulting XML document.

La query genera il codice XML seguente:This query constructs this XML:

<ProductModel ProdModelID="19" Name="Mountain-100">  
  <Summary>  
    <SummaryDescription>  
           <Summary> element from XML stored in CatalogDescription column  
    </SummaryDescription>  
  </Summary>  
</ProductModel>  

Questa query genera il codice XML desiderato.This query generates the XML you want. La query identifica due gruppi di colonne con valori di Tag 1 e 2 nei nomi delle colonne.The query identifies two column groups having 1 and 2 as Tag values in the column names.

Questa query usa il metodo query() (tipo di dati xml) del tipo di dati xml per eseguire query sulla colonna CatalogDescription di tipo xml e recuperare la descrizione di riepilogo.This query uses the query() Method (xml Data Type) of the xml data type to query the CatalogDescription column of xml type in order to retrieve the summary description. La query usa anche il metodo value() (tipo di dati xml) del tipo di dati xml per il recupero del valore ProductModelID dalla colonna CatalogDescription.The query also uses the value() Method (xml Data Type) of the xml data type to retrieve the ProductModelID value from the CatalogDescription column. Questo valore non è necessario nel codice XML risultante, ma lo è per ordinare il set di righe risultante.This value is not required in the resulting XML, but is required to sort the resulting rowset. Pertanto, il nome della colonna, [Summary!2!ProductModelID!HIDE]include la direttiva HIDE .Therefore, the column name, [Summary!2!ProductModelID!HIDE], includes the HIDE directive. Se questa colonna non viene inclusa nell'istruzione SELECT sarà necessario ordinare il set di righe per [ProductModel!1!ProdModelID] e [Summary!2!SummaryDescription] che sono di tipo xml e non sarà possibile utilizzare la colonna di tipo xml in ORDER BY.If this column is not included in the SELECT statement, you will have to sort the rowset by [ProductModel!1!ProdModelID] and [Summary!2!SummaryDescription] that is xml type and you cannot use the xml type column in ORDER BY. Viene pertanto aggiunta la colonna [Summary!2!ProductModelID!HIDE] , che viene poi specificata nella clausola ORDER BY.Therefore, the additional [Summary!2!ProductModelID!HIDE] column is added and is then specified in the ORDER BY clause.

USE AdventureWorks2012;  
GO  
SELECT  1 as Tag,  
        0 as Parent,  
        ProductModelID     as [ProductModel!1!ProdModelID],  
        Name               as [ProductModel!1!Name],  
        NULL               as [Summary!2!ProductModelID!hide],  
        NULL               as [Summary!2!SummaryDescription]  
FROM    Production.ProductModel  
WHERE   CatalogDescription is not null  
UNION ALL  
SELECT  2 as Tag,  
        1 as Parent,  
        ProductModelID,  
        Name,  
        CatalogDescription.value('  
         declare namespace PD="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
       (/PD:ProductDescription/@ProductModelID)[1]', 'int'),  
        CatalogDescription.query('  
         declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
         /pd:ProductDescription/pd:Summary')  
FROM    Production.ProductModel  
WHERE   CatalogDescription is not null  
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]  
FOR XML EXPLICIT  
go  

Risultato:This is the result:

<ProductModel ProdModelID="19" Name="Mountain-100">  
  <Summary>  
    <SummaryDescription>  
      <pd:Summary xmlns:pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">  
        <p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>  
      </pd:Summary>  
    </SummaryDescription>  
  </Summary>  
</ProductModel>  

Vedere ancheSee Also

Utilizzo della modalità EXPLICIT con FOR XMLUse EXPLICIT Mode with FOR XML