Для чего пространства имен XML?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
68
задан pnuts 16 November 2015 в 21:37
поделиться

9 ответов

Они для разрешения нескольких языков разметки быть объединенными, не имея необходимость волноваться о конфликтах элемента и названий атрибута.

, Например, посмотрите на любой бит кода XSLT, и затем думайте, что произошло бы, если бы Вы не использовали пространства имен и пытались записать XSLT, где вывод должен содержать "шаблон", "для - каждый", и т.д., элементы. Синтаксические ошибки, что.

я оставлю совет и ловушки другим с большим опытом, чем я.

34
ответ дан Steve Jessop 24 November 2019 в 14:18
поделиться

Это - почти то же как выяснение, "почему мы используем пакеты для Java/C#?":

  • возможность многократного использования : можно снова использовать ряд тегов/атрибутов, которые Вы определяете через различные типы xml документов.
  • модульный принцип : Если необходимо добавить некоторый "аспект" к XML; добавление пространства имен к Вашему xml документу более просто, чем изменение Вашего целого определения схемы XML.
  • Стараются не загрязнять "основное" пространство имен : Вы не вынуждаете свой синтаксический анализатор работать с огромным определением схемы, просто используете пространство имен, Вы должны.
17
ответ дан Mathias Müller 24 November 2019 в 14:18
поделиться

Самая большая ловушка, по моему скромному мнению, является документами интерпретации человеческого взаимодействия, например, разработать код для обработки Документа XML. Слишком легко сфокусироваться на литерале документа, а не результате инфонабора парсинга документа.

, например, следующие узлы

<a xmlns="uri:foo"/>
<foo:a xmlns:foo="uri:foo"/>
<bar:a xmlns:bar="uri:foo"/>

все семантически идентичны - все же очень отличающийся от наивного глаза.

1-й пример приводит к очень частой ошибке, разрабатывающей XPaths - пропавшие без вести того, что "a" находится в пространстве имен - таким образом//урожаи никакие соответствия. (или худшие все еще соответствующие узлы в различном пространстве имен!)

3-й пример открывает другой дефект в понимании - что текст префикса является семантически значительным. При парсинге документов с XPath я могу объявить любой префикс, который я люблю за соответствие, пока это - те соответствий uri из документа.

12
ответ дан stephbu 24 November 2019 в 14:18
поделиться

Думайте о них как о фамилиях для типов элемента. Если у Вас есть два друга, оба позвонили Bob, и Вы говорите об одном из них, кто-то мог бы спросить, о котором Bob Вы говорите. Просто говорящий "Bob" не очень услужлив, таким образом, Вы говорите "Bob Smith" или "Bob Jones".

Это - то же с типами элемента. Иногда краткое название не достаточно, потому что различные люди могут выбрать то же имя. Таким образом, Вы включаете URI как "фамилию", различать различное Качается там.

6
ответ дан Jim 24 November 2019 в 14:18
поделиться

XML является суперъязыком, означая, что это - основание для какого-либо основанного на XML языка (имеет смысл, правильно?). Думайте о XML как о пере, которое может записать любое предложение на любом языке. Все это зависит от писателя, и предпочтительно язык должен быть известен читателю.

пространство имен XML является в основном названием языка, во многом как "английский" или "ЧўЧ‘ЧЁЧ™ЧЄ". Я помогаю получателю XML-документа проанализировать его и извлечь информацию в.

Скажем, что у меня есть мебельная фабрика и у Вас есть мебельный магазин. Ваше приложение устройства хранения данных и мое приложение предоставления абсолютно не связаны, но когда они связываются через сообщения XML, сообщения должны быть понятными и легко проанализированные обеими сторонами

Поэтому, обе системы должны знать Схема , которая определяет синтаксис языка и согласованные ограничения. Думайте о схеме как об учебнике грамматики и словаре. Схема является документом, который обе системы должны знать, что, кто бы ни пишет, код парсинга в каждой системе должен знать, и это включает объявление пространства имен.

Каждое пространство имен называют как URI, который в большинстве случаев является местоположением документа схемы, который определяет его.

, Конечно, не для каждого XML-документа нужно пространство имен, особенно когда он не используется для передачи информации удаленной системе. Например, когда Вы сериализируете объекты в XML для сохранения в Вашей базе данных.

5
ответ дан Yuval 24 November 2019 в 14:18
поделиться

Мы используем пространства имен потому что люди xeep желание использовать те же слова для значения разных вещей в их собственном частном Айдахо. Обычно, можно определить от контекста, что имеет в виду человек. В базе данных персонала XML является записями персонала. В базе данных реестра транспортных средств XML является записями реестра транспортных средств.

И сохраните тег названным "местоположением", но тег означает разные вещи для каждого и содержит различные поля.

Теперь, это прохладно: но что, если Вы нуждаетесь или хотите сохранить XML от обоих в той же базе данных? Или, более интересно, что, если обе базы данных хотят сохранить блоки XML от некоторого другого, общая база данных (например: база данных Accounts).

пространства имен XML связывают с каждым XML-тэгом URI, такой, что само имя тега имеет URL перед ним, это - часть имени тега (конечно, фактическое использование XML-документов, стенография действительно делает это). Путем тщательного выбора URI его легкое, чтобы быть уверенным, что привычка имен тега сталкивается - это - как будто два тега местоположения назвали полностью по-другому, таким образом, нет никакого беспорядка. В качестве награды два совершенно различных тега местоположения могут включать материал от базы данных учетных записей и явно указать, что они говорят о том же самом.

вещью, которая делает все это полезным, является XPath.

С вышеупомянутым, можно начать писать выражения XPath, которые говорят вещи как: найдите меня любым accounts:account overdue разделы где угодно в этом xml. Или: найдите меня любым accounts:warning message объекты где угодно в этом конкретном блоке XML, где предупреждающее сообщение является дочерним узлом (однако глубоко) или personnel:payment узел или vehicle:status узел.

, Что выражение XPath могло бы использоваться где-нибудь в документе XSLT, задание которого оно должно преобразовать XML в XHTML или XPDF для дисплея.

, Какова выплата? Почему делают это? Поскольку можно искать файл журнала XML, вытащить все учетные записи запоздалые сообщения везде, где они появляются, , не путая их с тегами "сообщения", произведенными другими системами , преобразовывают их в xhtml и отображают их полужирным красный через тег css: все, не пишущий фрагмент процессуального кодекса .

3
ответ дан paulmurray 24 November 2019 в 14:18
поделиться

Например: Пространства имен XML Примером

В моих словах: Если необходимо использовать некоторый формат XML для внешней компании (например), и Вы должны обеспечить в XML-документе некоторую информацию, который имеет то же имя, Вам нужно пространство имен. Пример:

<sampleDoc>
   <header title="Hello world!">
      <items>
         <item name="Volvo" color="Blue"/>
      </items>
   </header>
</sampleDoc>

и Вы хотите, объединяют некоторые данные в этот документ, который имеет то же имя, но другой смысл (так оцените), необходимо использовать пространство имен:

<sampleDoc>
   <header title="Hello world!">
      <items>
         <item name="Volvo" color="White" my_unique_namespace:color="#FFFFFF"/>
      </items>
   </header>
</sampleDoc>

Ofcourse - можно изменить имя атрибута. Например, к "my_unique_color". Зародыш в другом документе, может быть атрибут с тем же именем снова. Так, если у Вас есть уникальное пространство имен (наш веб-домен, например), Вы можете всегда использовать те же названия элементов и/или приписываете withoud любые проблемы.

1
ответ дан TcKs 24 November 2019 в 14:18
поделиться

От рекомендация ...

W3 пространства имен XML обеспечивают простой метод для квалификации элемента и названий атрибута, используемых в документах Расширяемого языка разметки путем соединения их с пространствами имен, определенными ссылками URI.

0
ответ дан Joe Skora 24 November 2019 в 14:18
поделиться

Пространства имен используются для устранения неоднозначности имен, которые Вы используете в рамках документа. Это также дает Вам способность связать краткое название к пространству имен, которое может тогда использоваться для обращения к удаленному элементу или атрибуту. Само пространство имен относится к местоположению, которое определяет элементы и приписывает Вас использование в документе. Существует намного больше для знания, но это - основа его. Существует намного больше информации здесь .

0
ответ дан AdamC 24 November 2019 в 14:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: