1

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 attribut minOccurs is not set and the value of minOccurs is 1 by default).

  • But just one element below the <choice> element can occur exactly once (because no minOccurs or maxOccurs 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.

Kaleun
  • 13
  • 3

0 Answers0