Especificando valores padrão para atributos no Esquema XDR (Esquema XDR)
Importante |
---|
Este tópico está incluso como referência para aplicativos herdados. Não será feito nenhum trabalho de desenvolvimento futuro nesse recurso. Evite usá-lo em novos trabalhos de desenvolvimento. Em vez disso, use esquemas XSD anotados para criar exibições XML. Para obter mais informações, consulte Introdução a esquemas XSD anotados (SQLXML 4.0). Você pode converter esquemas XDR anotados existentes em esquemas XSD. Para obter mais informações, consulte Convertendo esquemas XDR anotados a esquemas XSD equivalentes (SQLXML 4.0). |
Em um banco de dados, podem ser atribuídos valores padrão a colunas. De modo semelhante, em um esquema XDR, é possível definir valores padrão para atributos (não podem ser atribuídos valores padrão a elementos no esquema XDR). O esquema XDR permite a especificação do atributo default em <AttributeType>.
Se um valor de coluna associado a um atributo for NULL, esse atributo não será retornado para aquela instância do elemento. Mas se o atributo default for especificado no <AttributeType>, o atributo será retornado com o valor padrão especificado.
Por exemplo, na extração de dados do banco de dados para um documento XML, se um dos valores do atributo estiver ausente, será usado um valor padrão desse atributo no esquema XDR.
Observação |
---|
Talvez os valores padrão não apareçam no documento retornado; em vez disso, esse valor será usado pelo analisador de validação sempre que o atributo não estiver presente. |
Observação |
---|
O valor padrão será usado se o analisador reconhecer o esquema. Ou seja, para o analisador MSXML, você deve garantir que o sinalizador resolveExternals esteja definido como TRUE (o padrão) para que o analisador busque os esquemas. Uma vez analisadas, as instâncias individuais têm os atributos (para os quais o padrão é especificado), independentemente de o atributo estar ou não incluído no documento XML. O DOM fornece o valor padrão. |
Exemplos
Para criar exemplos de funcionamento usando os exemplos a seguir, é necessário atender a determinados requisitos. Para obter mais informações, consulte Requisitos para executar exemplos do SQLXML.
A. Especificar o valor padrão para um atributo no esquema XDR
Neste exemplo, o atributo Title recebe um valor padrão de "XYZ". Quando os registros de contato são recuperados, um valor padrão é atribuído para os contatos que não têm um título.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Person.Person" >
<AttributeType name="CID" />
<AttributeType name="FirstName" />
<AttributeType name="LastName" />
<AttributeType name="Title" default="XYZ"/>
<attribute type="CID" sql:field="BusinessEntityID" />
<attribute type="FirstName" />
<attribute type="LastName" />
<attribute type="Title" />
</ElementType>
</Schema>
Para testar uma consulta XPath de exemplo com relação ao esquema
Copie o código de esquema acima e cole-o em um arquivo de texto. Salve o arquivo como DefaultValueXdr.xml.
Copie o modelo a seguir e cole-o em um arquivo de texto. Salve o arquivo como DefaultValueXdrT.xml no mesmo diretório onde você salvou DefaultValueXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="DefaultValueXdr.xml"> /Person.Person[@CID > 1000 and @CID < 1006] </sql:xpath-query> </ROOT>
O caminho de diretório especificado para o esquema de mapeamento (DefaultValueXdr.xml) é relativo ao diretório onde o modelo foi salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\MyDir\DefaultValueXdr.xml"
Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usando o ADO para executar consultas do SQLXML 4.0.
Este é o conjunto de resultados:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Person CID="1001" FirstName="Terri" LastName="Duffy" />
<Person.Person CID="1002" FirstName="Roberto" LastName="Tamburello" />
<Person.Person CID="1003" FirstName="Michael" LastName="Sullivan" />
<Person.Person CID="1004" FirstName="Sharon" LastName="Salavaria" />
<Person.Person CID="1005" FirstName="Gail" LastName="Erickson" Title="Ms." />
</ROOT>