Правильно ли использовать собственный тег вместодля восстановления какого-то ресурса? - PullRequest
0 голосов
/ 10 декабря 2010

Например, рассмотрим следующий пример

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/">
    <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
        <dc:title>Tony Benn</dc:title>
        <dc:publisher>Wikipedia</dc:publisher>
    </rdf:Description>
</rdf:RDF>

здесь мы опишем ресурс http://en.wikipedia.org/wiki/Tony_Benn. Мы знаем, что он Персона.Правильно / можно использовать собственный тег вместо ?Например, вот так:

<?xml version="1.0" ?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:z="http://www.zebooka.com/">
    <z:Person rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
        <dc:title>Tony Benn</dc:title>
        <dc:publisher>Wikipedia</dc:publisher>
    </z:Person>
</rdf:RDF>

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010
<z:Person
  xmlns:z="http://www.zebooka.com/" 
  rdf:about="http://en.wikipedia.org/wiki/Tony_Benn" />

совпадает с

<rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
    <rdf:type rdf:resource="http://www.zebooka.com/Person" />
</rdf:Description>

Просто убедитесь, что http://www.zebooka.com/Person и его тип rdfs:Class.

2 голосов
/ 10 декабря 2010

Я отвечу на ваш вопрос об изменении названия элемента или, по крайней мере, о последствиях позже. Однако я хотел бы отметить, что элемент description описывает документ, а не этого человека. Я бы добавил элемент person </ dc: person>, чтобы получить метаинформацию, которую вы ищете, которая соответствует уже используемым схемам. Предмет документа - это человек или имя этого человека, а пространство имен dc определяет элемент субъекта. Это мое предлагаемое решение для того, что я могу осветить, это ваш вариант использования из вашего вопроса.

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

Это действительно только жизнеспособно, если вы можете расширить через группу замещения, если речь идет о совместимости. Использование нового элемента без группы подстановки кажется простым. Однако, если вы хотите создать и передать документ через совместимую реализацию, парсер не будет обрабатывать эти данные одинаково, потому что он не будет знать семантическое значение вашего элемента. Если вы пишете код для конечных точек, обрабатывающих XML, вы можете делать все, что захотите, и вам не нужно проверять документ или проверять его по своему усмотрению. Это потребует гораздо больше работы, чем соблюдение схемы для этих типов.

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

Если вы беспокоитесь о том, как данные выглядят на уровне представления, я предлагаю вам преобразовать данные в этой точке с помощью преобразования xslt или любого другого соглашения, наиболее подходящего для вашего представления. Нет реальной необходимости менять модель данных.

...