创建 Veloconnect 服务器(使用 PHP),尝试从 xsd-schemas 生成 xml 文件
Creating a Veloconnect server (using PHP), trying to generate xml files from xsd-schemas
所以我的任务是在 php 环境中创建一个工作 veloconnect server。
这不是我第一次创建这样的服务器,我认为这不会成为问题。但是我被命令使用 veloconnect 使用 xsd 文件为服务器答案生成 xml 文件。这就是毛茸茸的地方...
所以我目前正在尝试使用 goetas tools 首先从 xsd 源生成 php 类,然后使用这些 类 并将它们序列化到我再次发出的 xml 文件中。
我能够用较小的测试文件完成每一个重要步骤。为此创建 yml-configuration-file 并不难。但就我而言,它有点难,而且我一个接一个地出错。
这是我的 yml 配置文件...
# config.yml
# Linux Users: PHP Namespaces use back slash \ rather than a forward slash /
# So for destinations_php, the namespace would be TestNs\MyApp
xsd2php:
namespaces:
'urn:veloconnect:profile-1.3': ''
'urn:veloconnect:transaction-1.0': 'vct'
'urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0': 'udt'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentTypes-1.0': 'cct'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0': 'ccts'
destinations_php:
'': objects/php
'vct': objects/php
'udt': objects/php
'cct': objects/php
'ccts': objects/php
destinations_jms:
'': objects/jms
'vct': objects/jms
'udt': objects/jms
'cct': objects/jms
'ccts': objects/jms
destinations_validation:
'': objects/validation
'vct': objects/validation
'udt': objects/validation
'cct': objects/validation
'ccts': objects/validation
# aliases: # optional
# 'http://www.example.org/test/':
# MyCustomXSDType: 'MyCustomMappedPHPType'
naming_strategy: short # optional and default
path_generator: psr4 # optional and default
# known_locations: # optional
# "http://www.example.org/test/somefile.xsd": somefile.xsd
known_namespace_locations: # optional
"urn:veloconnect:profile-1.3": xsd/profile-1.3.xsd
#"urn:veloconnect:catalog-1.1": xsd/catalog-1.1.xsd
xsd-文件...
<?xml version="1.0" encoding="utf-8" ?>
<!--
******************************************************************************
Copyright (C) Verbund Service und Fahrrad e. V. (2019)
Dieses Dokument, sowie Übersetzungen desselben, dürfen uneingeschränkt kopiert
und verteilt werden, vorausgesetzt, der obige Urheberrechtshinweis und diese
und die folgenden Bestimmungen sind in jeder Kopie enthalten.
Veränderungen, die über die Erfordernisse einer Übersetzung hinausgehen, sind
nur erlaubt, wenn die veränderte Version nicht den Namen veloconnect benützt
und deutliche Hinweise darauf enthält, dass diese geänderte Version auf der
veloconnect-Spezifikation beruht und inhaltliche Veränderungen vorgenommen
worden sind. Ferner ist der Urheber dieser Modifikationen zu benennen.
Zweck dieser Spezifikation ist die Implementierung von Software. Der Urheber
dieser Spezifikation weist ausdrücklich darauf hin, dass sich aus dem
Urheberrecht an dieser Spezifikation keinerlei Rechte an diesen
Implementierungen ableiten und umgekehrt aus den Implementierungen keinerlei
Ansprüche an den Urheber der Spezifikation entstehen. Insbesondere übernimmt
der Urheber dieser Spezifikation keinerlei Verantwortung für die Konformität
einer Implementierung zur veloconnect-Spezifikation und verlangt auch keine
Lizenzgebühren für die Benutzung der Spezifikation.
Der Urheber übernimmt keinerlei Gewährleistung, insbesondere nicht dafür, dass
diese Spezifikation fehlerfrei oder für einen bestimmten Zweck geeignet
ist. Die hiermit gewährten Rechte sind unwiderruflich.
******************************************************************************
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:veloconnect:profile-1.3"
xmlns:vct="urn:veloconnect:transaction-1.0"
xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0"
targetNamespace="urn:veloconnect:profile-1.3"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import
namespace="urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0" schemaLocation="ubl/common/UBL-UnspecializedDatatypes-1.0.xsd"/>
<xsd:import namespace="urn:veloconnect:transaction-1.0" schemaLocation="transaction-1.0.xsd"/>
<xsd:element name="GetProfileRequest"
type="vct:RequestType">
<xsd:annotation>
<xsd:documentation>Anfrage zur Ermittlung der Fähigkeiten des
Servers.
Jeder veloconnect-konforme Server muss diese Anfrage verarbeiten können.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="GetProfileResponse">
<xsd:annotation>
<xsd:documentation>Antwort auf GetProfileRequest.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="vct:ResponseType">
<xsd:sequence>
<xsd:element name="SellerName" type="udt:TextType"
maxOccurs="1" minOccurs="0" />
<xsd:element name="Message" type="udt:TextType"
maxOccurs="1" minOccurs="0" />
<xsd:element ref="VeloconnectProfile" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="VeloconnectProfile">
<xsd:annotation>
<xsd:documentation>Information über die Fähigkeiten des Servers.
Die implements-Elemente informieren über die unterstützten
Transaktionen.
Die property-Elemente enthalten einige für die Implementierung
spezifischen
Informationen als key/value-Paare.
UnsupportedQuery und SpecialRequestReference beziehen sich auf die Belegverwaltung.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Implements" type="ImplementsType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="Property" type="PropertyType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="UnsupportedQuery" type="UnsupportedQueryType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="SpecialRequestReference" type="RequestReferenceType"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ImplementsType">
<xsd:annotation>
<xsd:documentation>Information über implementierte Operationen und
Transaktionen, sowie unterstützte Bindungen. Die Informationen über
eine
unterstützte Transaktion gelten für alle Operationen dieser Transaktion.
Eine Angabe bei URI ist nur erforderlich, wenn diese Operation oder
Transaktion unter einer anderen URL anzusprechen ist.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:choice>
<xsd:element name="Transaction" type="TransactionType" />
<xsd:element name="Operation" type="OperationType" />
</xsd:choice>
<xsd:element name="Binding" type="BindingType" />
<xsd:element name="URI" type="xsd:anyURI" minOccurs="0"
maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PropertyType">
<xsd:annotation>
<xsd:documentation>Eigenschaft der Serverimplementierung.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Key" type="PropertyKeyType"/>
<xsd:element name="Value" type="xsd:normalizedString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RequestReferenceType">
<xsd:annotation>
<xsd:documentation>Spezielle Refeernzen zur Abfrage von Angeboten.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="RequestReference" type="xsd:normalizedString"/>
<xsd:element name="Description" type="xsd:normalizedString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="OperationType">
<xsd:annotation>
<xsd:documentation>Liste der Operationen.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="GetStatus">
<xsd:annotation>
<xsd:documentation>GetStatus</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Rollback">
<xsd:annotation>
<xsd:documentation>Rollback</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetItemDetails">
<xsd:annotation>
<xsd:documentation>GetItemDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetItemDetailsList">
<xsd:annotation>
<xsd:documentation>GetItemDetailsList</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetClassificationScheme">
<xsd:annotation>
<xsd:documentation>GetClassificationScheme</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OfferQuery">
<xsd:annotation>
<xsd:documentation>OfferQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OfferDetails">
<xsd:annotation>
<xsd:documentation>OfferDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderConfirmationQuery">
<xsd:annotation>
<xsd:documentation>OrderConfirmationQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderConfirmationDetails">
<xsd:annotation>
<xsd:documentation>OrderDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNoteQuery">
<xsd:annotation>
<xsd:documentation>DeliveryNoteQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNoteDetails">
<xsd:annotation>
<xsd:documentation>DeliveryNoteDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="InvoiceInformationQuery">
<xsd:annotation>
<xsd:documentation>InvoiceInformationQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="InvoiceInformationDetails">
<xsd:annotation>
<xsd:documentation>InvoiceInformationDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TransactionType">
<xsd:annotation>
<xsd:documentation>Liste der Transaktionen.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Order">
<xsd:annotation>
<xsd:documentation>Order</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderInOnlineShop">
<xsd:annotation>
<xsd:documentation>OrderInOnlineShop</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="TextSearch">
<xsd:annotation>
<xsd:documentation>Volltextsuche</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="BindingType">
<xsd:annotation>
<xsd:documentation>Liste der Bindungen</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="URL">
<xsd:annotation>
<xsd:documentation>URL: Anfrage per http (GET oder POST),
Parameter als Querystring.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="URL-S">
<xsd:annotation>
<xsd:documentation>URL-S : Wie URL nur mit https.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XML-POST">
<xsd:annotation>
<xsd:documentation>XML-POST: Request wird als XML-Dokument per http (POST) übertragen.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XML-POST-S">
<xsd:annotation>
<xsd:documentation>XML-POST-S: Wie POST, nur mit https.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PropertyKeyType">
<xsd:annotation>
<xsd:documentation>Mögliche Eigenschaften der Serverimplemtierung.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="RecommendedRetailPrice.Netto">
<xsd:annotation>
<xsd:documentation>RecommendedRetailPrice.Netto: Indikator ob die empfohlenen Verkaufspreise als Nettopreise angegeben werden.
Mögliche Werte:
false (empfohlener VK ist brutto),
true (empfohlener VK ist netto)</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="quantityUnitCode.EA">
<xsd:annotation>
<xsd:documentation>quantityUnitCode.EA: Indikator ob grundsätzlich nur Stück als Einheit verwendet wird.
Mögliche Werte: false, true</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderInOnlineShop.TransactionID">
<xsd:annotation>
<xsd:documentation>OrderInOnlineShop.TransactionID: Feste TransactionID für die Benutzung der OrderInOnlineShop-Transaktion.
Muss angegeben werden, wenn diese Transaktion unterstützt wird.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.DeliveryDate">
<xsd:annotation>
<xsd:documentation>Order.DeliveryDate: Indikator, ob terminierte Bestellungen möglich sind.
Werte:
false : nicht möglich
order : nur ein Datum für die ganze Bestellung
line : Datum für jede Bestellzeile individuell einstellbar</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.Availability">
<xsd:annotation>
<xsd:documentation>Order.Availability: Indikator, ob Informationen zur
Lieferbarkeit zur Vergügung gestellt werden.
Werte:
true : grundsätzlich Angaben zur Lieferbarkeit
false : grundsätzlich keine Angaben zu Lieferbarkeit</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.Backlog">
<xsd:annotation>
<xsd:documentation>Order.Backlog: Indikator, wie die Nachlieferung
gesteuert werden kann. Mögliche Werte:
false : nicht möglich
order : Nachlieferungsverhalten nur für die Bestellung einstellbar
line : Nachlieferungsverhalten für jede Bestellzeile individuell einstellbar</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.BacklogDefault">
<xsd:annotation>
<xsd:documentation>Order.BacklogDefault: Grundsätzliches Verhalten bei nicht lieferbaren Artikeln.
Werte:
false : keine Nachlieferung
true : Nachlieferung</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.ExpectingDelivery">
<xsd:annotation>
<xsd:documentation>Order.ExpectingDelivery: Zeitraum innerhalb dessen mit einer Lieferung zu rechnen ist;
Wert: Zahl (Anzahl von Tagen)</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="UnsupportedQueryType">
<xsd:annotation>
<xsd:documentation>Suchparameter je Belegart.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="OrderConfirmation-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in OrderConfirmationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNote-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in DeliveryNoteQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNote-OrderConfirmationID">
<xsd:annotation>
<xsd:documentation>OrderConfirmationID in DeliveryNoteQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-OrderConfirmationID">
<xsd:annotation>
<xsd:documentation>OrderConfirmationID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-DeliveryNoteID">
<xsd:annotation>
<xsd:documentation>DeliveryNoteID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
this 是我得到的错误...
Warning: strpos(): Empty needle in C:\inetpub\wwwroot\e-vendo\_veloconnect\vendor\goetas-webservices\xsd2php\src\Php\PathGenerator\Psr4PathGenerator.php on line 14
恐怕我真的需要一些帮助才能完成这项工作,我已经调试这些工具好几天了。我错过了什么吗?互联网上没有关于此的任何有用的文档或线程。我很感激每一个提示、替代解决方案或工具来解决这个问题。
好的...终于自己找到了答案。第一个命名空间应该是 veloconnect,之后我只需要添加缺少的命名空间。因此,如果将来有人遇到同样的问题,现在可以使用的 yml 文件看起来就是这样...
# config.yml
# Linux Users: PHP Namespaces use back slash \ rather than a forward slash /
# So for destinations_php, the namespace would be TestNs\MyApp
xsd2php:
namespaces:
'urn:veloconnect:profile-1.3': 'veloconnect'
'urn:veloconnect:transaction-1.0': 'vct'
'urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0': 'udt'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentTypes-1.0': 'cct'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0': 'ccts'
destinations_php:
'veloconnect': objects/php
'vct': objects/php
'udt': objects/php
'cct': objects/php
'ccts': objects/php
destinations_jms:
'veloconnect': objects/jms
'vct': objects/jms
'udt': objects/jms
'cct': objects/jms
'ccts': objects/jms
destinations_validation:
'veloconnect': objects/validation
'vct': objects/validation
'udt': objects/validation
'cct': objects/validation
'ccts': objects/validation
# aliases: # optional
# 'http://www.example.org/test/':
# MyCustomXSDType: 'MyCustomMappedPHPType'
naming_strategy: short # optional and default
path_generator: psr4 # optional and default
# known_locations: # optional
# "http://www.example.org/test/somefile.xsd": somefile.xsd
known_namespace_locations: # optional
"urn:veloconnect:profile-1.3": xsd/profile-1.3.xsd
#"urn:veloconnect:catalog-1.1": xsd/catalog-1.1.xsd
所以我的任务是在 php 环境中创建一个工作 veloconnect server。
这不是我第一次创建这样的服务器,我认为这不会成为问题。但是我被命令使用 veloconnect 使用 xsd 文件为服务器答案生成 xml 文件。这就是毛茸茸的地方...
所以我目前正在尝试使用 goetas tools 首先从 xsd 源生成 php 类,然后使用这些 类 并将它们序列化到我再次发出的 xml 文件中。
我能够用较小的测试文件完成每一个重要步骤。为此创建 yml-configuration-file 并不难。但就我而言,它有点难,而且我一个接一个地出错。
这是我的 yml 配置文件...
# config.yml
# Linux Users: PHP Namespaces use back slash \ rather than a forward slash /
# So for destinations_php, the namespace would be TestNs\MyApp
xsd2php:
namespaces:
'urn:veloconnect:profile-1.3': ''
'urn:veloconnect:transaction-1.0': 'vct'
'urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0': 'udt'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentTypes-1.0': 'cct'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0': 'ccts'
destinations_php:
'': objects/php
'vct': objects/php
'udt': objects/php
'cct': objects/php
'ccts': objects/php
destinations_jms:
'': objects/jms
'vct': objects/jms
'udt': objects/jms
'cct': objects/jms
'ccts': objects/jms
destinations_validation:
'': objects/validation
'vct': objects/validation
'udt': objects/validation
'cct': objects/validation
'ccts': objects/validation
# aliases: # optional
# 'http://www.example.org/test/':
# MyCustomXSDType: 'MyCustomMappedPHPType'
naming_strategy: short # optional and default
path_generator: psr4 # optional and default
# known_locations: # optional
# "http://www.example.org/test/somefile.xsd": somefile.xsd
known_namespace_locations: # optional
"urn:veloconnect:profile-1.3": xsd/profile-1.3.xsd
#"urn:veloconnect:catalog-1.1": xsd/catalog-1.1.xsd
xsd-文件...
<?xml version="1.0" encoding="utf-8" ?>
<!--
******************************************************************************
Copyright (C) Verbund Service und Fahrrad e. V. (2019)
Dieses Dokument, sowie Übersetzungen desselben, dürfen uneingeschränkt kopiert
und verteilt werden, vorausgesetzt, der obige Urheberrechtshinweis und diese
und die folgenden Bestimmungen sind in jeder Kopie enthalten.
Veränderungen, die über die Erfordernisse einer Übersetzung hinausgehen, sind
nur erlaubt, wenn die veränderte Version nicht den Namen veloconnect benützt
und deutliche Hinweise darauf enthält, dass diese geänderte Version auf der
veloconnect-Spezifikation beruht und inhaltliche Veränderungen vorgenommen
worden sind. Ferner ist der Urheber dieser Modifikationen zu benennen.
Zweck dieser Spezifikation ist die Implementierung von Software. Der Urheber
dieser Spezifikation weist ausdrücklich darauf hin, dass sich aus dem
Urheberrecht an dieser Spezifikation keinerlei Rechte an diesen
Implementierungen ableiten und umgekehrt aus den Implementierungen keinerlei
Ansprüche an den Urheber der Spezifikation entstehen. Insbesondere übernimmt
der Urheber dieser Spezifikation keinerlei Verantwortung für die Konformität
einer Implementierung zur veloconnect-Spezifikation und verlangt auch keine
Lizenzgebühren für die Benutzung der Spezifikation.
Der Urheber übernimmt keinerlei Gewährleistung, insbesondere nicht dafür, dass
diese Spezifikation fehlerfrei oder für einen bestimmten Zweck geeignet
ist. Die hiermit gewährten Rechte sind unwiderruflich.
******************************************************************************
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:veloconnect:profile-1.3"
xmlns:vct="urn:veloconnect:transaction-1.0"
xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0"
targetNamespace="urn:veloconnect:profile-1.3"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import
namespace="urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0" schemaLocation="ubl/common/UBL-UnspecializedDatatypes-1.0.xsd"/>
<xsd:import namespace="urn:veloconnect:transaction-1.0" schemaLocation="transaction-1.0.xsd"/>
<xsd:element name="GetProfileRequest"
type="vct:RequestType">
<xsd:annotation>
<xsd:documentation>Anfrage zur Ermittlung der Fähigkeiten des
Servers.
Jeder veloconnect-konforme Server muss diese Anfrage verarbeiten können.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="GetProfileResponse">
<xsd:annotation>
<xsd:documentation>Antwort auf GetProfileRequest.</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="vct:ResponseType">
<xsd:sequence>
<xsd:element name="SellerName" type="udt:TextType"
maxOccurs="1" minOccurs="0" />
<xsd:element name="Message" type="udt:TextType"
maxOccurs="1" minOccurs="0" />
<xsd:element ref="VeloconnectProfile" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="VeloconnectProfile">
<xsd:annotation>
<xsd:documentation>Information über die Fähigkeiten des Servers.
Die implements-Elemente informieren über die unterstützten
Transaktionen.
Die property-Elemente enthalten einige für die Implementierung
spezifischen
Informationen als key/value-Paare.
UnsupportedQuery und SpecialRequestReference beziehen sich auf die Belegverwaltung.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Implements" type="ImplementsType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="Property" type="PropertyType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="UnsupportedQuery" type="UnsupportedQueryType"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="SpecialRequestReference" type="RequestReferenceType"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ImplementsType">
<xsd:annotation>
<xsd:documentation>Information über implementierte Operationen und
Transaktionen, sowie unterstützte Bindungen. Die Informationen über
eine
unterstützte Transaktion gelten für alle Operationen dieser Transaktion.
Eine Angabe bei URI ist nur erforderlich, wenn diese Operation oder
Transaktion unter einer anderen URL anzusprechen ist.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:choice>
<xsd:element name="Transaction" type="TransactionType" />
<xsd:element name="Operation" type="OperationType" />
</xsd:choice>
<xsd:element name="Binding" type="BindingType" />
<xsd:element name="URI" type="xsd:anyURI" minOccurs="0"
maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PropertyType">
<xsd:annotation>
<xsd:documentation>Eigenschaft der Serverimplementierung.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="Key" type="PropertyKeyType"/>
<xsd:element name="Value" type="xsd:normalizedString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RequestReferenceType">
<xsd:annotation>
<xsd:documentation>Spezielle Refeernzen zur Abfrage von Angeboten.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="RequestReference" type="xsd:normalizedString"/>
<xsd:element name="Description" type="xsd:normalizedString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="OperationType">
<xsd:annotation>
<xsd:documentation>Liste der Operationen.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="GetStatus">
<xsd:annotation>
<xsd:documentation>GetStatus</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Rollback">
<xsd:annotation>
<xsd:documentation>Rollback</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetItemDetails">
<xsd:annotation>
<xsd:documentation>GetItemDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetItemDetailsList">
<xsd:annotation>
<xsd:documentation>GetItemDetailsList</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="GetClassificationScheme">
<xsd:annotation>
<xsd:documentation>GetClassificationScheme</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OfferQuery">
<xsd:annotation>
<xsd:documentation>OfferQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OfferDetails">
<xsd:annotation>
<xsd:documentation>OfferDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderConfirmationQuery">
<xsd:annotation>
<xsd:documentation>OrderConfirmationQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderConfirmationDetails">
<xsd:annotation>
<xsd:documentation>OrderDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNoteQuery">
<xsd:annotation>
<xsd:documentation>DeliveryNoteQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNoteDetails">
<xsd:annotation>
<xsd:documentation>DeliveryNoteDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="InvoiceInformationQuery">
<xsd:annotation>
<xsd:documentation>InvoiceInformationQuery</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="InvoiceInformationDetails">
<xsd:annotation>
<xsd:documentation>InvoiceInformationDetails</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TransactionType">
<xsd:annotation>
<xsd:documentation>Liste der Transaktionen.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Order">
<xsd:annotation>
<xsd:documentation>Order</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderInOnlineShop">
<xsd:annotation>
<xsd:documentation>OrderInOnlineShop</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="TextSearch">
<xsd:annotation>
<xsd:documentation>Volltextsuche</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="BindingType">
<xsd:annotation>
<xsd:documentation>Liste der Bindungen</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="URL">
<xsd:annotation>
<xsd:documentation>URL: Anfrage per http (GET oder POST),
Parameter als Querystring.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="URL-S">
<xsd:annotation>
<xsd:documentation>URL-S : Wie URL nur mit https.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XML-POST">
<xsd:annotation>
<xsd:documentation>XML-POST: Request wird als XML-Dokument per http (POST) übertragen.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="XML-POST-S">
<xsd:annotation>
<xsd:documentation>XML-POST-S: Wie POST, nur mit https.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PropertyKeyType">
<xsd:annotation>
<xsd:documentation>Mögliche Eigenschaften der Serverimplemtierung.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="RecommendedRetailPrice.Netto">
<xsd:annotation>
<xsd:documentation>RecommendedRetailPrice.Netto: Indikator ob die empfohlenen Verkaufspreise als Nettopreise angegeben werden.
Mögliche Werte:
false (empfohlener VK ist brutto),
true (empfohlener VK ist netto)</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="quantityUnitCode.EA">
<xsd:annotation>
<xsd:documentation>quantityUnitCode.EA: Indikator ob grundsätzlich nur Stück als Einheit verwendet wird.
Mögliche Werte: false, true</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="OrderInOnlineShop.TransactionID">
<xsd:annotation>
<xsd:documentation>OrderInOnlineShop.TransactionID: Feste TransactionID für die Benutzung der OrderInOnlineShop-Transaktion.
Muss angegeben werden, wenn diese Transaktion unterstützt wird.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.DeliveryDate">
<xsd:annotation>
<xsd:documentation>Order.DeliveryDate: Indikator, ob terminierte Bestellungen möglich sind.
Werte:
false : nicht möglich
order : nur ein Datum für die ganze Bestellung
line : Datum für jede Bestellzeile individuell einstellbar</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.Availability">
<xsd:annotation>
<xsd:documentation>Order.Availability: Indikator, ob Informationen zur
Lieferbarkeit zur Vergügung gestellt werden.
Werte:
true : grundsätzlich Angaben zur Lieferbarkeit
false : grundsätzlich keine Angaben zu Lieferbarkeit</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.Backlog">
<xsd:annotation>
<xsd:documentation>Order.Backlog: Indikator, wie die Nachlieferung
gesteuert werden kann. Mögliche Werte:
false : nicht möglich
order : Nachlieferungsverhalten nur für die Bestellung einstellbar
line : Nachlieferungsverhalten für jede Bestellzeile individuell einstellbar</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.BacklogDefault">
<xsd:annotation>
<xsd:documentation>Order.BacklogDefault: Grundsätzliches Verhalten bei nicht lieferbaren Artikeln.
Werte:
false : keine Nachlieferung
true : Nachlieferung</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Order.ExpectingDelivery">
<xsd:annotation>
<xsd:documentation>Order.ExpectingDelivery: Zeitraum innerhalb dessen mit einer Lieferung zu rechnen ist;
Wert: Zahl (Anzahl von Tagen)</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="UnsupportedQueryType">
<xsd:annotation>
<xsd:documentation>Suchparameter je Belegart.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="OrderConfirmation-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in OrderConfirmationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNote-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in DeliveryNoteQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-OrderID">
<xsd:annotation>
<xsd:documentation>OrderID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="DeliveryNote-OrderConfirmationID">
<xsd:annotation>
<xsd:documentation>OrderConfirmationID in DeliveryNoteQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-OrderConfirmationID">
<xsd:annotation>
<xsd:documentation>OrderConfirmationID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Invoice-DeliveryNoteID">
<xsd:annotation>
<xsd:documentation>DeliveryNoteID in InvoiceInformationQueryRequest
</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
this 是我得到的错误...
Warning: strpos(): Empty needle in C:\inetpub\wwwroot\e-vendo\_veloconnect\vendor\goetas-webservices\xsd2php\src\Php\PathGenerator\Psr4PathGenerator.php on line 14
恐怕我真的需要一些帮助才能完成这项工作,我已经调试这些工具好几天了。我错过了什么吗?互联网上没有关于此的任何有用的文档或线程。我很感激每一个提示、替代解决方案或工具来解决这个问题。
好的...终于自己找到了答案。第一个命名空间应该是 veloconnect,之后我只需要添加缺少的命名空间。因此,如果将来有人遇到同样的问题,现在可以使用的 yml 文件看起来就是这样...
# config.yml
# Linux Users: PHP Namespaces use back slash \ rather than a forward slash /
# So for destinations_php, the namespace would be TestNs\MyApp
xsd2php:
namespaces:
'urn:veloconnect:profile-1.3': 'veloconnect'
'urn:veloconnect:transaction-1.0': 'vct'
'urn:oasis:names:specification:ubl:schema:xsd:UnspecializedDatatypes-1.0': 'udt'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentTypes-1.0': 'cct'
'urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-1.0': 'ccts'
destinations_php:
'veloconnect': objects/php
'vct': objects/php
'udt': objects/php
'cct': objects/php
'ccts': objects/php
destinations_jms:
'veloconnect': objects/jms
'vct': objects/jms
'udt': objects/jms
'cct': objects/jms
'ccts': objects/jms
destinations_validation:
'veloconnect': objects/validation
'vct': objects/validation
'udt': objects/validation
'cct': objects/validation
'ccts': objects/validation
# aliases: # optional
# 'http://www.example.org/test/':
# MyCustomXSDType: 'MyCustomMappedPHPType'
naming_strategy: short # optional and default
path_generator: psr4 # optional and default
# known_locations: # optional
# "http://www.example.org/test/somefile.xsd": somefile.xsd
known_namespace_locations: # optional
"urn:veloconnect:profile-1.3": xsd/profile-1.3.xsd
#"urn:veloconnect:catalog-1.1": xsd/catalog-1.1.xsd