Home > Archive > MS SQL XML > July 2005 > Complex reusable type in mapping schema









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Complex reusable type in mapping schema
Ahsan

2005-07-19, 3:23 am

Can any one give me the example of Schema mapping with sql server and the
schema contains complex reuseable types. I am trying to map a schema
containing complex reuseable type. My XML Mapping Schema is defined as under:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ht="http://www.w3.org/1999/xhtml" xmlns:cus="http://localhost/"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
targetNamespace="http://localhost/" elementFormDefault="qualified"
attributeFormDefault
="unqualified">

<xs:element name="Template" sql:relation="PatientDetails">
<xs:annotation>
<xs:documentation>Root element for Normal Template</xs:documentation>
</xs:annotation>
<xs:complexType mixed="false">
<xs:sequence>
<xs:element name="PatientDetails1" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="FirstName" sql:field="PDNFirstName"
type="xs:string"/>
<xs:element name="LastName" sql:field="PDNLastName" type="xs:string"/>
</xs:all>
<xs:attribute name="id" type="xs:ID"/>
</xs:complexType>
</xs:element>
<xs:element name="AppointmentDetails" type=" cus:AppointmentBlock
"
minOccurs="0"/>
<xs:element name="PhysicianDetails" type="cus:PhysiciansBlock"
minOccurs="0"/>
<xs:element name="ChiefComplains" type="cus:ComplainsBlock"
minOccurs="0"/>
<xs:element name=" NeurologicalPhysical
Exam"
type=" cus:NeurologicalPhys
icalExamBlock" minOccurs="0"/>
<xs:element name=" MedicalDecisionMakin
g" type="cus:MedicalDesicion"
minOccurs="0"/>
<xs:element name="FollowUp" type="cus:FollowupBlock" minOccurs="0"/>

</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="FullNameBlock" mixed="false">
<xs:all>
<xs:element name="Name" type="cus:NameBlock"/>
</xs:all>
</xs:complexType>
<xs:complexType name="NameBlock" mixed="false">
<xs:all>
<xs:element name="FirstName" sql:field="PDNFirstName" type="xs:string"/>
<xs:element name="LastName" sql:field="PDNLastName" type="xs:string"/>
</xs:all>
<xs:attribute name="id" type="xs:ID"/>
</xs:complexType>
<xs:complexType name="AppointmentBlock" mixed="false">
<xs:all>
<xs:element name="DOB" sql:field="APDDOB" type="xs:string"/>
<xs:element name="DOS" sql:field="APDDOS" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="ComplainsBlock" mixed="false">
<xs:all>
<xs:element name="ChiefComplains" type="xs:string"/>
<xs:element name=" HistoryOfPresentilln
ess" type="cus:freeTextType"/>
</xs:all>
</xs:complexType>
<xs:complexType name=" NeurologicalPhysical
ExamBlock" mixed="false">
<xs:all>

<xs:element name="Constitutional">
<xs:complexType mixed="false">
<xs:attribute name="Isfreetext" default="false" type="xs:boolean"/>
</xs:complexType></xs:element>

<xs:element name="Musculoskeletal" type="xs:string"/>
<xs:element name="Neurological" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="MedicalDesicion" mixed="false">
<xs:all>
<xs:element name="DataReview" type="xs:string"/>
<xs:element name="Diagnoses" type="cus:freeTextType"/>
<xs:element name="Treatment" type="cus:freeTextType"/>
</xs:all>
</xs:complexType>
<xs:complexType name="FollowupBlock" mixed="false">
<xs:sequence>
<xs:element name="Followup" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PhysiciansBlock" mixed="false">
<xs:all>
<xs:element name="SeenBy" type="cus:FullNameBlock">
<!--
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="cus:NameBlock"/>
</xs:sequence>
</xs:complexType>
-->
</xs:element>
<xs:element name=" PrimaryCarePhysician
" type="cus:FullNameBlock"
minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="freeTextType" mixed="false">
<xs:all>
<xs:element name="FreeTextArea" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:schema>


My sql database schema is as follows:


CREATE TABLE [dbo].[PatientDetails] (
[PatientDetails] [varchar] (100) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDNFirstName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDNLastName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
& #91;AppointmentDetai
ls] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS
NULL ,
[APDDOS] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[APDDOB] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
& #91;PhysicianDetails
] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDSeenBy] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDSBName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDSBNFName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL ,
[PDSBNLName] [varchar] (50) COLLATE SQL_Latin1_General_C
P1_CI_AS NULL
) ON [PRIMARY]
GO

I am trying to xpath the xml view using ado.net.
The Xpath is cmd.CommandText = "Template";

when I try to query the xml view I get the SqlXmlException with the
following message "Schema: relationship expected on 'PatientDetails1'."

can any one help solve this problem. If any one can let me know about some
example then It is really great.

Also can I Xpath the xml saved as blob in sql server.






Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com