Utilizzo della parola chiave del contenuto Durante la creazione di una tabella con una colonna XML dalla collezione dello schema XML

StackOverflow https://stackoverflow.com/questions/5416382

Domanda

Durante la creazione di una tabella con una colonna di tipo XML, mi riferisco a una collezione schema XML XML complessa .Quando specifico lo schema XML XML , ho la possibilità di menzionare il contenuto Content o Documento Parola chiave.Quest'ultimo garantirà che i dati XML siano memorizzati come documento in una singola colonna.

Secondo un tutorial video il contenuto memorizzerà i dati XML in frammenti .

Oltre alla dichiarazione di cui sopra non trovo riferimento da nessun'altra parte per quanto riguarda l'utilizzo del contenuto Contenuto e l'implicazione su schema e dati.

Vorrei sapere come vengono creati e gestiti i frammenti e se e come possono essere interrogati individualmente.Inoltre, come sono correlati i frammenti.Successivamente, quando modifico la collezione dello schema XML, qual è l'impatto.

Nessuna soluzione corretta

Altri suggerimenti

In realtà penso che sqlserver 2005 xml è abbastanza buono documentato.
Il contenuto è il valore predefinito e consente qualsiasi XML valido. Il documento è più specifico e significa che i dati XML che è possibile per archiviare è consentito solo di avere un singolo nodo di alto livello.

Crea:

CREATE TABLE XmlCatalog ( 
   ID INT PRIMARY KEY, 
   Document XML(CONTENT myCollection))
.

Inserire:

INSERT INTO XmlCatalog VALUES (2, 
'<doc id="123">
    <sections>
   <section num="1"><title>XML Schema</title></section>
   <section num="3"><title>Benefits</title></section>
   <section num="4"><title>Features</title></section>
    </sections>
</doc>')
.

Selezionare:

SELECT xCol.query('/doc[@id = 123]//section')   
FROM XmlCatalog   
WHERE  xCol.exist ('/doc[@id = 123]') = 1
.

... e così via. Il linguaggio della query supera più o meno in un sottoinsieme di XPath 1.0.

Se si modifica un XSD, viene controllato gli inserti e gli aggiornamenti e memorizzati all'interno dell'XML di ciascun elemento. Per quanto ho capito che il Doc è inoltre permesso aggiungere più schemi per una colonna in modo che le voci possano fare riferimento a schemi diversi.

Modifica:
Ok, dopo aver letto le parti specifiche della documentazione, penso di capire quale sia il tuo problema. Il riferimento non è molto chiaro su quel punto, ma per quanto ne capisco solo le voci con un nodo di alto livello possono essere legate a schemi XSD.
A causa del fatto che XSD-Schemas richiedono un singolo nodo di alto livello che definisce il file XSD utilizzato non sarà possibile convalidare i frammenti contenenti più di un elemento di livello superiore. Non ho provato ma penso che non possa essere fatto.
Tuttavia, sembra essere valido per definire una colonna contenta, modificare un XSD e memorizzare entrambi, XML con un nodo di alto livello che fa riferimento XSD e XML-frammenti che controllano solo la distribuzione. È possibile accedere ai frammenti utilizzando la lingua della query XPath Show nell'istruzione Seleziona sopra.
Non posso dirti molto delle implicazioni sulle prestazioni. Il riferimento menziona che XSD sono memorizzati in linea, quindi ciò avrà bisogno di uno spazio aggiuntivo all'interno del DB. Anche le query XPath devono essere eseguite. Nonostante il fatto che XPath di solito sia abbastanza veloce, immagino che potrebbe ridurre il performamento perché deve essere eseguito su ogni riga per ottenere il risultato. Per essere sicuro di pensare di dover controllare il piano di esecuzione per la tua richiesta specifica a seconda delle dimensioni e della complessità dell'XML memorizzato e dell'espressione XPath.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top