2013-08-07 4 views
1

У меня есть (любопытный) неотложный вопрос здесь :(XML для преобразования XSD

У меня есть XML переведенного в файле XSD. Когда я пытаюсь импортировать/использовать файл XSD в SUP, я получаю "ошибка выполнения":

"Cannot resolve namespace URI for qualified name: sap:label" 

Оба, то XML и XSD, где создается автоматически (с помощью SAP в XML и http://www.freeformatter.com/ XSD), так что я своего рода нужно некоторое руководство: D

Вот XML:

<?xml version="1.0" encoding="utf-8"?> 
<edmx:Edmx Version="1.0" 
    xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" 
    xmlns:gp="http://www.sap.com/Protocols/SAPData/GenericPlayer" 
    xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
    xmlns:sap="http://www.sap.com/Protocols/SAPData"> 
    <edmx:DataServices m:DataServiceVersion="2.0"> 
     <Schema Namespace="Z_SERVICE_BANK_V3" 
       xmlns="http://schemas.microsoft.com/ado/2008/09/edm"> 
      <EntityType Name="Bank" sap:content-version="1"> 
       <Key> 
        <PropertyRef Name="bankCountry"/> 
        <PropertyRef Name="bankID"/> 
       </Key> 
       <Property Name="bankCountry" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="Bank Country" sap:filterable="false"/> 
       <Property Name="bankID" Type="Edm.String" Nullable="false" MaxLength="15" sap:label="Bank Key" sap:filterable="false"/> 
       <Property Name="bankName" Type="Edm.String" MaxLength="60" sap:label="Bank name" sap:filterable="false"/> 
       <Property Name="region" Type="Edm.String" MaxLength="3" sap:label="Region" sap:filterable="false"/> 
       <Property Name="street" Type="Edm.String" MaxLength="35" sap:label="Street" sap:filterable="false"/> 
       <Property Name="city" Type="Edm.String" MaxLength="35" sap:label="City" sap:filterable="false"/> 
      </EntityType> 
      <EntityContainer Name="Z_SERVICE_BANK_V3" m:IsDefaultEntityContainer="true"> 
       <EntitySet Name="BankCollection" EntityType="Z_SERVICE_BANK_V3.Bank" sap:content-version="1"/> 
      </EntityContainer> 
     </Schema> 
    </edmx:DataServices> 
</edmx:Edmx> 

А вот XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/ado/2008/09/edm"> 
    <xs:element name="Schema"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="EntityType"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="Key"> 
           <xs:complexType> 
            <xs:sequence> 
             <xs:element name="PropertyRef" maxOccurs="unbounded" minOccurs="0"> 
              <xs:complexType> 
               <xs:simpleContent> 
                <xs:extension base="xs:string"> 
                 <xs:attribute type="xs:string" name="Name" use="optional"/> 
                </xs:extension> 
               </xs:simpleContent> 
              </xs:complexType> 
             </xs:element> 
            </xs:sequence> 
           </xs:complexType> 
          </xs:element> 
          <xs:element name="Property" maxOccurs="unbounded" minOccurs="0"> 
           <xs:complexType> 
            <xs:simpleContent> 
             <xs:extension base="xs:string"> 
              <xs:attribute type="xs:string" name="Name" use="optional"/> 
              <xs:attribute type="xs:string" name="Type" use="optional"/> 
              <xs:attribute type="xs:string" name="Nullable" use="optional"/> 
              <xs:attribute type="xs:byte" name="MaxLength" use="optional"/> 
              <xs:attribute xmlns:sap="http://www.sap.com/Protocols/SAPData" ref="sap:label"/> 
              <xs:attribute xmlns:sap="http://www.sap.com/Protocols/SAPData" ref="sap:filterable"/> 
             </xs:extension> 
            </xs:simpleContent> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attribute type="xs:string" name="Name"/> 
         <xs:attribute xmlns:sap="http://www.sap.com/Protocols/SAPData" ref="sap:content-version"/> 
        </xs:complexType> 
       </xs:element> 
       <xs:element name="EntityContainer"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="EntitySet"> 
           <xs:complexType> 
            <xs:simpleContent> 
             <xs:extension base="xs:string"> 
              <xs:attribute type="xs:string" name="Name"/> 
              <xs:attribute type="xs:string" name="EntityType"/> 
              <xs:attribute xmlns:sap="http://www.sap.com/Protocols/SAPData" ref="sap:content-version"/> 
             </xs:extension> 
            </xs:simpleContent> 
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
         <xs:attribute type="xs:string" name="Name"/> 
         <xs:attribute xmlns:met="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" ref="met:IsDefaultEntityContainer"/> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attribute type="xs:string" name="Namespace"/> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

Любые идеи?

Большое спасибо :)

+0

Я использовал тот же сайт http://www.freeformatter.com/ для «проверки» двух файлов. Я получаю ту же ошибку, но я ее не понимаю: D Src-resolve.4.2: Ошибка разрешения компонента sap: label '. Было обнаружено, что «sap: label« Is In Namespace »http://www.sap.com/Protocols/SAPData ', но компоненты из этого пространства имен не являются ссылочными из документа схемы« null ». Если это некорректное пространство имен, возможно, префикс «sap: label» нуждается в изменении. Если это правильное пространство имен, тогда соответствующий тег «импорт» должен быть добавлен в «null». – user2595314

ответ

2

Образец XML вы даете есть элементы и атрибуты в нескольких пространствах имен:

Документы схемы XSD объявляют компоненты (элементы, атрибуты, типы) для одного целевого пространства имен; вам потребуется как минимум четыре документа схемы, чтобы объявить все элементы и атрибуты в вашем XML-документе.

XSD вы сгенерировали охватывает часть, а не все, из документа (он начинается с элементом {http://schemas.microsoft.com/ado/2008/09/edm} схемы, а не на {http://schemas.microsoft.com/ado/2007/06/edmx} EDMX элемента), и она не имеет XSL: импорт для других пространств имен , Короткий ответ: либо вы не вызывали генератор схемы должным образом, либо не выполнили задачу, которую вы настраиваете. Вероятно, вам понадобится (1) более эффективное решение черного ящика или (2) лучшее понимание XSD и его использования, или и то, и другое.

Но в краткосрочной перспективе все используемые пространства имен определяются крупными компетентными техническими организациями. Почему вы пишете собственные схемы для этих пространств имен? Вы искали документы схемы XSD, определяющие эти форматы у владельцев пространств имен?

+0

Привет, XML и XSD, где они не вручную, где они сгенерированы SAP. Я просто пытаюсь понять эту проблему, чтобы дать лучший вопрос гуру SAP, чтобы решить проблему. – user2595314

+0

Да, вы ясно дали понять, что XSD не был сделан вручную. Если вы хотите * исправить * проблему, вы можете найти лучший способ генерации схемы или понять, как работают схемы (или найти схемы, созданные владельцами рассматриваемых пространств имен).Если вы хотите * объяснить * вопрос другим, у вас нет выбора; вы должны начать с * понимания * проблемы, а это значит, что вы должны начать с изучения того, как взаимодействуют документы схемы XSD и пространства имен. –

Смежные вопросы