Używam xsd:all
w złożonym typie. Kiedy przegapię jakieś obowiązkowe elementy podczas walidacji, pokaże wszystkie elementy. Nie wyświetli dokładnego pominiętego elementu.
Ale jeśli używam xsd:sequence
, mogę uzyskać dokładny pominięty element.
Czy jest jakaś różnica między tymi dwoma?
xsd:sequence
: Element XML musi być w tej samej kolejności.
Ale xsd:all
: element XML może być dowolną kolejnością.
xml
xsd
xml-validation
xsd-validation
user1679378
źródło
źródło
Odpowiedzi:
<xsd:all>
określa, że elementy podrzędne mogą pojawiać się w dowolnej kolejności.<xsd:sequence>
określa, że elementy potomne mogą pojawiać się tylko w podanej kolejności.Przykład sekwencji:
<xs:element name="compElement"> <xs:complexType> <xs:sequence> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Jeśli utworzysz XML z tego xsd, będzie on wyglądał mniej więcej tak:
<compElement> <ele1>First</ele1> <ele2>Second</ele2> <ele3>Third</ele3> <ele4>Fourth</ele4> </compElement>
Przykład dla wszystkich:
<xs:element name="compElement"> <xs:complexType> <xs:all> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
Jeśli utworzysz plik XML z tego xsd, może to wyglądać mniej więcej tak:
<compElement> <ele2>Second</ele2> <ele1>First</ele1> <ele4>Fourth</ele4> <ele3>Third</ele3> </compElement>
Więcej informacji o xsd: all
Więcej informacji o xsd: sequence
Mam nadzieję, że odpowiedziałem na twoje pytanie.
źródło
Różnica:
Z samouczków W3Schools tutaj i tutaj .
źródło
<xs:all>
ograniczenia, ile razy może wystąpić element podrzędny? Nie mogę znaleźć na to dowodów w specyfikacji W3C.Wszystkie wskaźniki
Wskaźnik sekwencji
link referencyjny
źródło
Schemat określa jedynie, co stanowi zgodny dokument.
Sposób zgłaszania niezgodności zależy wyłącznie od walidatora. Nic nie stoi na przeszkodzie, aby walidator zgłosił dokładnie, których pól brakuje, ale najwyraźniej ten, którego używasz, nie jest w tym przypadku.
Niezależnie od tego, czy jest to błąd, czy projekt, musisz omówić z dostawcą walidatora.
źródło
PROSTY PRZYKŁAD XML:
<school> <firstname>John</firstname> <lastname>Smith</lastname> </school>
XSD POWYŻEJ XML (wyjaśnione):
<xs:element name="school"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Tutaj:
xs: element : definiuje element.
xs: all : oznacza, że elementy podrzędne mogą pojawiać się w dowolnej kolejności.
xs: sequence : oznacza, że elementy podrzędne pojawiają się tylko w podanej kolejności.
xs: complexType : oznacza, że zawiera inne elementy.
xs: simpleType : Oznacza, że nie zawierają innych elementów.
typ: string, decimal, integer, boolean, date, time,
Za pomocą dodatkowych atrybutów możemy wykonać wiele operacji.
Wykonywanie dowolnego zadania na xsd jest prostsze niż xml.
źródło
kiedy używamy znacznika under, oznacza to, że wszystkie elementy zadeklarowane w tym typie złożonym MUSZĄ pojawić się w tej samej kolejności w dokumencie XML. w przeciwnym razie pojawi się błąd. bo nie ma potrzeby określania elementów w odpowiedniej kolejności.
źródło