Sdílet prostřednictvím


Vytváření sekcí CDATA pomocí sql:use-cdata (SQLXML 4.0)

platí pro:SQL Serverazure SQL Database

V XML se sekce CDATA používají k úniku bloků textu, které obsahují znaky, jež by jinak byly rozpoznány jako značkovací znaky.

Databáze v Microsoft SQL Server může někdy obsahovat znaky, které jsou XML parserem považovány za značkovací znaky; například úhlové závorky (< a >), symbol menší nebo rovný (<=) a ampersand (&) jsou považovány za značkovací znaky. Tento typ speciálních znaků však můžete zabalit do sekce CDATA, aby nebyly považovány za značkovací znaky. Text v sekci CDATA je XML parserem považován za prostý text.

Anotace sql:use-cdata se používá k určení, že data vrácená SQL Serverem by měla být zabalena do sekce CDATA (tj. uvádí, zda by měla být hodnota ze sloupce specifikovaného sql:field uzavřena v sekci CDATA). Anotace sql:use-cdata může být specifikována pouze na prvcích, které se mapují na sloupec databáze.

Anotace sql:use-cdata přijímá Booleovskou hodnotu (0 = nepravda, 1 = pravda). Přijatelné hodnoty jsou 0, 1, pravda a nepravda.

Tato anotace nemůže být použita s sql:url-encode ani na typy atributů ID, IDREF, IDREFS, NMTOKEN a NMTOKENS.

Examples

Pro vytvoření pracovních vzorků podle následujících příkladů musíte splnit určité požadavky. Pro více informací viz Požadavky na spouštění SQLXML Examples.

A. Specifikace sql:use-cdata na prvku

V následujícím schématu je sql:use-cdata nastaveno na 1 (True) pro <AddressLine1> v rámci Address> elementu<. Výsledkem je, že data jsou vrácena v sekci CDATA.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Address"   
               sql:relation="Person.Address"   
               sql:key-fields="AddressID" >  
   <xsd:complexType>  
        <xsd:sequence>  
          <xsd:element name="AddressID"  type="xsd:string" />  
          <xsd:element name="AddressLine1" type="xsd:string"   
                       sql:use-cdata="1" />  
        </xsd:sequence>  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Pro testování vzorku dotazu XPath proti schématu
  1. Zkopírujte výše uvedený kód schématu a vložte ho do textového souboru. Uložte soubor jako UseCData.xml.

  2. Zkopírujte následující šablonu a vložte ji do textového souboru. Ulož soubor jako UseCDataT.xml do stejného adresáře, kde jsi uložil UseCData.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="UseCData.xml">  
            /Address[AddressID < 11]  
        </sql:xpath-query>  
    </ROOT>  
    

    Adresářová cesta určená pro mapovací schéma (UseCData.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:

    mapping-schema="C:\SqlXmlTest\UseCData.xml"  
    
  3. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

Toto je množina částečných výsledků:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">   
  <Address>   
    <AddressID>1</CustomerID>   
    <AddressLine1>   
      <![CDATA[ 1970 Napa Ct.  ]]>   
    </AddressLine1>   
  </Address>  
  <Address>  
    <AddressLine1>   
      <![CDATA[ 9833 Mt. Dias Blv. ]]>   
    </AddressLine1>   
  </Address>  
  ...  
</ROOT>