Заменить префикс пространства имен XML на полное значение URI пространства имен? - PullRequest
0 голосов
/ 19 октября 2018

Чтобы уточнить вопрос, могу ли я заменить определения пространства имен определением?

Это все еще правильно сформированный XML?Являются ли они «одинаковыми» в контексте, является вторым по-прежнему правильно сформированным XML-сообщением SOAP, подобно оригиналу.

Например, Это правильно сформированное XML-сообщение SOAP из примера Oracle.Затем я сделаю его копию, но заменит атрибут SOAP-ENV на его определение:

<?xml version="1.0" encoding="utf-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
    <SOAP-ENV:Fault>
        <faultcode>SOAP-ENV:Client</faultcode>
        <faultstring>Message does not have necessary info</faultstring>
        <faultactor>http://gizmos.com/order</faultactor>
        <detail>
        <PO:order xmlns:PO="http://gizmos.com/orders/">
        Quantity element does not have a value</PO:order>
        <PO:confirmation xmlns:PO="http://gizmos.com/confirm">
        Incomplete address: no zip code</PO:confirmation>
        </detail>
    </SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Так что SOAP-ENV, который определяется в цитируемом определении "http://schemas.xmlsoap.org/soap/envelope/", заменяется.

<?xml version="1.0" encoding="utf-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<http://schemas.xmlsoap.org/soap/envelope/:Header/>
<http://schemas.xmlsoap.org/soap/envelope/:Body>
    <http://schemas.xmlsoap.org/soap/envelope/:Fault>
        <faultcode>SOAP-ENV:Client</faultcode>
        <faultstring>Message does not have necessary info</faultstring>
        <faultactor>http://gizmos.com/order</faultactor>
        <detail>
        <PO:order xmlns:PO="http://gizmos.com/orders/">
        Quantity element does not have a value</PO:order>
        <PO:confirmation xmlns:PO="http://gizmos.com/confirm">
        Incomplete address: no zip code</PO:confirmation>
        </detail>
    </http://schemas.xmlsoap.org/soap/envelope/:Fault>
</http://schemas.xmlsoap.org/soap/envelope/:Body>
</http://schemas.xmlsoap.org/soap/envelope/:Envelope>

1 Ответ

0 голосов
/ 19 октября 2018

Нет, синтаксис, предложенный вами для замены префиксов пространства имен на URI пространства имен, не является правильно сформированным XML.Некоторые программы поддерживают что-то близкое, хотя:

<{http://schemas.xmlsoap.org/soap/envelope/}Envelope />

Это обычно называется Кларк Нотация .

...