Элемент <choice> как дочерний элемент от <sequence>

Я не понимаю. Что именно означает этот XSD?:

<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>

Я так понимаю:

  • Все элементы ниже <sequence> элемент может встречаться сколь угодно часто, но хотя бы один раз (потому что атрибут minOccurs не установлен, а значение minOccurs по умолчанию 1).

  • Но только один элемент ниже <choice> элемент может встречаться ровно один раз (потому что нет minOccurs или maxOccurs установлено).

Однако поскольку <choice> элемент находится под <sequence>элемент, могут ли все еще присутствовать другие перечисленные элементы? Тогда почему вы не определили все в<sequence> элемент вместо определения другого <choice> элемент?

Это часть моего XML-документа:

<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>

и это действительно так, почему? <X509IssuerSerial> а также <X509Certificate>происходит оба.

0 ответов

Другие вопросы по тегам