Saxon JS испускает суперрасширенные атрибуты пространства имен - PullRequest
0 голосов
/ 27 марта 2020

При использовании Saxon JS я могу убедиться, что он выдает тот же вывод, что и Saxon, с одним предупреждением. Похоже, что Saxon JS будет выдавать атрибуты пространства имен для каждого элемента, даже если они не нужны. Я попытался настроить exclude-result-prefixes, но это не имело никакого эффекта.

Saxon JS 1.2.0 Выход

<CastVoteRecordReport xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd" xsi:schemaLocation="NIST_V0_cast_vote_records.xsd NIST_V0_cast_vote_records.xsd">
    <CVR xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">
        <BallotStyleId xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">_01-0052-01</BallotStyleId>
        <CreatingDeviceId xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">rd</CreatingDeviceId>
        <CurrentSnapshotId xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">i__a_aaaaaago</CurrentSnapshotId>
        <CVRSnapshot xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd" ObjectId="i__a_aaaaaago">
            <CVRContest xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">
                <ContestId xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">_1GO</ContestId>
                <Undervotes xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="NIST_V0_cast_vote_records.xsd">1</Undervotes>
            </CVRContest>
...

Saxon-EE версия 9.8.0.12 выход

<?xml version="1.0" encoding="UTF-8"?>
<CastVoteRecordReport xmlns="NIST_V0_cast_vote_records.xsd"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <CVR>
      <BallotStyleId>_01-0052-01</BallotStyleId>
      <CreatingDeviceId>rd</CreatingDeviceId>
      <CurrentSnapshotId>i__a_aaaaaago</CurrentSnapshotId>
      <CVRSnapshot ObjectId="i__a_aaaaaago">
         <CVRContest>
            <ContestId>_1GO</ContestId>
            <Undervotes>1</Undervotes>
         </CVRContest>
...

Обратный вызов на саксонском JS .Transform

var transformCallback = (fragment: DocumentFragment) => {
            // have to convert to string?
            var div = document.createElement('div');
            div.appendChild(fragment.cloneNode(true));
            // replace existing output content
            that.outputText(div.innerHTML);
}

1 Ответ

1 голос
/ 28 марта 2020

Saxon- JS 1.2.0 не имеет (полного, согласованного) сериализатора, поэтому возникает вопрос, как вы производите лексический вывод XML, показанный в вашем вопросе?

В терминах в модели данных XDM пространства имен XML и XSI действительно должны находиться в области действия каждого элемента в дереве результатов; хороший сериализатор устранит избыточные пространства имен. Так что это все вопрос о том, как сериализуется дерево результатов.

(Обратите внимание, что Saxon- JS 2.0, который является финальным этапом тестирования, будет иметь полный сериализатор.)

...