I don't get it. What does this XSD mean exactly?:
<element name="X509Data" type="ds:X509DataType"/>
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
<element name="X509SKI" type="base64Binary"/>
<element name="X509SubjectName" type="string"/>
<element name="X509Certificate" type="base64Binary"/>
<element name="X509CRL" type="base64Binary"/>
<any namespace="##other" processContents="lax"/>
</choice>
</sequence>
</complexType>
I understand it in that way:
All elements below the
<sequence>
element can occur as often as required, but at least once (because the attributminOccurs
is not set and the value ofminOccurs
is 1 by default).But just one element below the
<choice>
element can occur exactly once (because nominOccurs
ormaxOccurs
is set).
However, since the <choice>
element is under the <sequence>
element, can the other listed elements still occur? Then why didn't you define everything under the <sequence>
element instead of defining another <choice>
element?
This a part of my XML document:
<X509Data>
<X509IssuerSerial>
<X509IssuerName>E=forename.surname@provider.com, CN=Forename Surname, OU=Management, O=Company, L=City, ST=State, C=CO</X509IssuerName>
<X509SerialNumber>13894744055819454397</X509SerialNumber>
</X509IssuerSerial>
<X509Certificate>MIIEEjCCAvqgAwIBAgIJAMDUDBnsFse9MA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
VQQGEwJERTEQMA4GA1UECAwHU2FjaHNlbjEQMA4GA1UEBwwHTGVpcHppZzERMA8G
A1UECgwIQ29tcHVkb2MxEzARBgNVBAsMCk1hbmFnZW1lbnQxFTATBgNVBAMMDFN0
ZXZlIE1hcnRpbjErMCkGCSqGSIb3DQEJARYcc3RldmUubWFydGluMTk5MEBvdXRs
b29rLmNvbTAeFw0yMDAxMDcxNTQzMThaFw0yMTAxMDYxNTQzMThaMIGdMQswCQYD
VQQGEwJERTEQMA4GA1UECAwHU2FjaHNlbjEQMA4GA1UEBwwHTGVpcHppZzERMA8G
A1UECgwIQ29tcHVkb2MxEzARBgNVBAsMCk1hbmFnZW1lbnQxFTATBgNVBAMMDFN0
ZXZlIE1hcnRpbjErMCkGCSqGSIb3DQEJARYcc3RldmUubWFydGluMTk5MEBvdXRs
b29rLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOoYJi1AUDma
w07WuR+ivHX+Kr3yf0F/d9SrEzHovmmxYyac7C4DheGglJ2H9A3u2x5osu4fG/1f
JhEhMqhhLGBfLtUrB6v2CWh6FOz06sz/W8NaIRCo81eOJVJDqwiejk24q6JnjP37
NZ7TQ0/7oeEU5VhKrgTWo0jUoCe6xqOSvuVlr1Er4Jh0zwVumWuj63UJsjXMgqC8
R3Qomf2ZIgO0HTGOiXA5NXA4Hzsp2lyxn7/9UExzh6L5v+bQSFvCN12TRQeVLoR4
xog9SOI1yiP3XzhZVbKVHOnXbuzxuuKjPOm7GjKELQoNaSIkwkZybKzXDZfyk3IM
Vb8i86rg3xkCAwEAAaNTMFEwHQYDVR0OBBYEFFSiMmL2coCYAD82W8WQ9v4VDxc2
MB8GA1UdIwQYMBaAFFSiMmL2coCYAD82W8WQ9v4VDxc2MA8GA1UdEwEB/wQFMAMB
Af8wDQYJKoZIhvcNAQELBQADggEBAEwohR0qXn1yqt3wtRPzCzKbv7X+GUlNKZ21
Rdc6GdwuyWI08gWh0g0EQ1MesYEv9PZbrwDQs+iOA8f9E5LVTJ0LRgug9DpxDagg
JnQEKYQUhA3E4HBrNe3PH1h22+UD3AVbZ86LzkZdu5RooJQlJsLbJzWCUpjW/3zl
M6z+1SHEre6GIRN8lPMOreZxVGgUlCSE6Y3qk2e/8WNeMCjQ9gpC3CEwTmL6law/
7EgVcud3DI7MQg0ebRPtCSLROYokyThJROHlv7DGEdaEPrdk8dzq77ncxzac8amq
B0V/qDtp5qD0N5KJT6P4JuOcVz3YFkROn2wjQ2RfhCr1ZMMbAUc=</X509Certificate>
</X509Data>
and it's valid, why? <X509IssuerSerial>
and <X509Certificate>
occurs both.