Как будут обрабатываться пустые элементы XML? - PullRequest
0 голосов
/ 22 марта 2011

Я не очень знаком с XML, поэтому, возможно, вы сможете мне помочь: -)

Допустим, у нас есть очень простой XML-документ, подобный этому:

<person>
  <firstname>John</firstname>
  <middlename/>
  <familyname>Doe</familyname>
</person>

Итак, по-видимому, Джон Доу не имеет отчества.В файле xsd этот элемент определен как необязательный с minOccurs = 0.

Существуют ли какие-либо правила, стандарты, передовые практики или что-то еще, что определяет, как обрабатывать этот пустой элемент?Если для элемента определено minOccurs = 0, его следует удалить?Пустые элементы, на мой взгляд, бесполезны, если только атрибуты не используются вместе с этим элементом.

Спасибо, Роберт

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Вот пример фрагмента документа XHTML:

<p>The quick brown fox<br />jumped over the lazy dog</p>

Существует пустой элемент без атрибутов, но удаление его изменит структуру документа.

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

1 голос
/ 22 марта 2011

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

Помните, конечно, что когда вы моделируете личные имена как (первое, среднее, последнее), вы принудительно вписываете данные в структуру, которая не соответствует реальному разнообразию имен, используемых в мире, даже если вы интересуют только люди, которые живут в Соединенных Штатах.

1 голос
/ 22 марта 2011

Ну, я бы сказал, что это вопрос определения. Если вы хотите подчеркнуть, что у человека есть второе имя или нет, сделайте это, как в своем фрагменте XML, с minOccurs и maxOccurs, установленными на 1 (или другими; возможно, вы хотите смоделировать людей с более чем одной средней название?). В противном случае установите minOccurs на 0, чтобы оставить его вне.

Как показывает Дэвид, наличие пустого элемента не обязательно должно совпадать с отсутствием этого элемента вообще. Вопрос в том, как вы определяете свою семантику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...