Ошибка «Неправильный выбор XPath внутри узла поля. Не удается найти ..» при загрузке схемы в набор данных - PullRequest
1 голос
/ 20 апреля 2011

Я хочу добавить схему XML (Main.xsd) в набор данных, который включает в себя другую схему (base.xsd), определяющую сложные типы, использованные в предыдущей.

В Main.xsd есть блок, определяющий xs: unique с селектором и полем для уникального определения конкретного элемента в качестве первичного ключа.Вот Main.xsd:

<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema"  xmlns="http://tempuri.org/Main.xsd" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop"  targetNamespace="http://tempuri.org/Main.xsd"  attributeFormDefault="unqualified" elementFormDefault="qualified" version="3.0.4 01-07-2011">

<xs:include schemaLocation="base.xsd"/>

<xs:complexType name="Employees">
<xs:sequence>
  <xs:element name="EmployeeID" type="UE_SignedInt"/>
</xs:sequence>
</xs:complexType>

<xs:element name="Report" type=" Employees" />

<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element ref=" Report " />
  </xs:choice>
</xs:complexType>
<xs:unique name="ReportConst" msdata:PrimaryKey="true">
  <xs:selector xpath=".//Report" />
  <xs:field xpath="EmployeeID" />
</xs:unique>
</xs:element> 
</xs:schema>

Тип «UE_SignedInt» определен в base.xsd, который включен в Main.xsd.

Теперь, когда я пытаюсь включить Main.xsd в набор данных выдает ошибку: «Неверный выбор XPath внутри узла поля.Не удается найти EmployeeID », так как EmployeeID использует тип, определенный в файле base.xsd.

Если я использую для этого элемента какой-то базовый тип, например« xs: int », загрузка в набор данных работает нормально.Может ли кто-нибудь, пожалуйста, помогите мне решить эту проблему ??

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Проблема была решена, когда я изменил уникальный блок как:

<xs:unique name="ReportConst" msdata:PrimaryKey="true"> 
<xs:selector xpath="." /> 
<xs:field xpath="EmployeeID" /> 
</xs:unique>
0 голосов
/ 20 апреля 2011

Вам необходимо указать пространство имен элемента UE_SignedInt.

    <xs:element name="EmployeeID" type="xxx:UE_SignedInt"/>
...