기본 제공 XML 스키마 컬렉션 참조(sys)Reference the Built-in XML Schema Collection (sys)

사용자가 만드는 모든 데이터베이스의 sys 관계형 스키마에는 미리 정의된 sys XML 스키마 컬렉션이 있습니다.Every database you create has a predefined sys XML schema collection in the sys relational schema. 이 스키마 컬렉션에는 이러한 미리 정의된 스키마가 포함되며 사용자가 만든 다른 XML 스키마 컬렉션으로부터 이러한 스키마를 액세스할 수 있습니다.It reserves these predefined schemas, and they can be accessed from any other user-created XML schema collection. 이러한 미리 정의된 스키마에 사용되는 접두사는 XQuery에서 의미를 갖습니다.The prefixes used in these predefined schemas are meaningful in XQuery. 예약된 접두사는 xml 뿐입니다.Only xml is a reserved prefix.

xml = http://www.w3.org/XML/1998/namespace  
xs = http://www.w3.org/2001/XMLSchema  
xsi = http://www.w3.org/2001/XMLSchema-instance  
fn = http://www.w3.org/2004/07/xpath-functions  
sqltypes = http://schemas.microsoft.com/sqlserver/2004/sqltypes  
xdt = http://www.w3.org/2004/07/xpath-datatypes  
(no prefix) = urn:schemas-microsoft-com:xml-sql  
(no prefix) = http://schemas.microsoft.com/sqlserver/2004/SOAP  

sqltypes 네임스페이스에는 사용자가 만든 모든 XML 스키마 컬렉션에서 참조할 수 있는 구성 요소가 포함됩니다.Note that the sqltypes namespace contains components that can be referenced from any user-created XML schema collection. Microsoft 웹 사이트 에서 sqltypes스키마를 다운로드할 수 있습니다.You can download the sqltypes schema from this Microsoft Web site. 기본 제공되는 구성 요소는 다음과 같습니다.The built-in components include the following:

  • XSD 유형XSD types

  • lang, basespaceXML 특성XML attributes lang, base, and space

  • sqltypes 네임스페이스의 구성 요소Components of the sqltypes namespace

    다음 쿼리는 사용자가 만든 XML 스키마 컬렉션에서 참조할 수 있는 기본 제공 구성 요소를 반환합니다.The following query returns built-in components that can be referenced from a user-created XML schema collection:

SELECT C.name, N.name, C.symbol_space_desc from sys.xml_schema_components C join sys.xml_schema_namespaces N  
on ((C.xml_namespace_id = N.xml_namespace_id) AND (C.xml_collection_id = N.xml_collection_id))  
join sys.xml_schema_collections SC  
on SC.xml_collection_id = C.xml_collection_id  
where ((C.xml_collection_id = 1) AND (C.name is not null) AND (C.scoping_xml_component_id is null)   
AND (SC.schema_id = 4))  
GO  

다음 예에서는 사용자 스키마에서 이러한 구성 요소를 참조하는 방법을 보여 줍니다.The following example shows how these components are referenced in a user schema. CREATE XML SCHEMA COLLECTIONvarchar 네임스페이스에 정의된 sqltypes 유형을 참조하는 XML 스키마 컬렉션을 만듭니다.CREATE XML SCHEMA COLLECTION creates an XML schema collection that references the varchar type defined in the sqltypes namespace. 또한 lang 네임스페이스에 정의된 xml 특성을 참조합니다.The example also references the lang attribute that is defined in the xml namespace.

CREATE XML SCHEMA COLLECTION SC AS '  
<schema   
   xmlns="http://www.w3.org/2001/XMLSchema"   
   targetNamespace="myNS"  
   xmlns:ns="myNS"  
   xmlns:s="http://schemas.microsoft.com/sqlserver/2004/sqltypes" >   
   <import namespace="http://www.w3.org/XML/1998/namespace"/>  
   <import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes"/>  
   <element name="root">  
      <complexType>  
          <sequence>  
             <element name="a" type="string"/>  
             <element name="b" type="string"/>  
             <!-- varchar type is defined in the sys.sys collection and   
                  can be referenced in any user-defined schema -->  
             <element name="c" type="s:varchar"/>  
          </sequence>  
          <attribute name="att" type="int"/>  
          <!-- xml:lang attribute is defined in the sys.sys collection   
               and can be referenced in any user-defined schema -->  
          <attribute ref="xml:lang"/>  
      </complexType>  
    </element>  
 </schema>'  
GO  
 -- Cleanup  
DROP xml schema collection SC   
GO  

다음 사항에 유념하십시오.You should note the following:

  • 사용자 정의 XML 스키마 컬렉션에 있는 이러한 네임스페이스의 XML 스키마는 수정할 수 없습니다.You cannot modify XML schemas with these namespaces in any user-defined XML schema collection. 예를 들어 다음 XML 스키마 컬렉션은 보호되는 sqltypes 네임스페이스에 구성 요소를 추가하기 때문에 오류가 발생합니다.For example, the following XML schema collection fails, because it is adding a component to the sqltypes protected namespace:

    CREATE XML SCHEMA COLLECTION SC AS '  
    <schema xmlns="http://www.w3.org/2001/XMLSchema"   
    targetNamespace    
        ="http://schemas.microsoft.com/sqlserver/2004/sqltypes" >   
          <element name="root" type="string"/>  
    </schema>'  
    GO  
    
  • sys XML 스키마 컬렉션을 사용하여 xml 열, 변수 또는 매개 변수를 형식화할 수 없습니다.You cannot use the sys XML schema collection to type xml columns, variables, or parameters. 예를 들어 다음 코드는 오류를 반환합니다.For example, the following code returns an error:

    DECLARE @x xml (sys.sys)  
    
  • 이러한 기본 제공 스키마의 직렬화는 지원되지 않습니다.Serialization of these built-in schemas is not supported. 예를 들어 다음 코드는 오류를 반환합니다.For example, the following code returns an error:

    SELECT XML_SCHEMA_NAMESPACE(N'sys',N'sys')  
    GO  
    

    다음 코드는 varchar 네임스페이스에 정의된 sqltypes 유형을 사용하는 XML 스키마 컬렉션을 만듭니다.The following code is another example in which you create an XML schema collection that uses the varchar type defined in the sqltypes namespace:

CREATE XML SCHEMA COLLECTION SC AS '  
<schema xmlns="http://www.w3.org/2001/XMLSchema"   
        targetNamespace="myNS" xmlns:ns="myNS"  
        xmlns:s="http://schemas.microsoft.com/sqlserver/2004/sqltypes">  
   <import     
     namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes"/>  
      <simpleType name="myType">  
            <restriction base="s:varchar">  
                  <maxLength value="20"/>  
            </restriction>  
      </simpleType>  
      <element name="root" type="ns:myType"/>  
</schema>'  
go  

다음과 같이 형식화된 XML 변수를 만들고, 여기에 XML 인스턴스를 지정한 다음 <root> 요소 유형의 값이 varchar 유형인지 확인할 수 있습니다.As shown in the following, you can create a typed XML variable, assign an XML instance to it, and verify that the value of the <root> element type is a varchar type.

DECLARE @var XML(SC)  
SET @var = '<root xmlns="myNS">My data</root>'  
SELECT @var.query('declare namespace sqltypes = "http://schemas.microsoft.com/sqlserver/2004/sqltypes";  
declare namespace ns="myNS";   
data(/ns:root[1]) instance of sqltypes:varchar?')  
GO  

instance of sqltypes:varchar? 식은 <root> 요소 값이 @var 변수와 연결된 스키마에 따라 varchar로부터 파생된 유형이기 때문에 TRUE를 반환합니다.The instance of sqltypes:varchar? expression returns TRUE, because the <root> element value is of a type derived from varchar according to the schema that is associated with the @var variable.

참고 항목See Also

XML 스키마 컬렉션(SQL Server)XML Schema Collections (SQL Server)