powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Граф, или Правильно ли я понимаю смысл IDREF?
14 сообщений из 14, страница 1 из 1
Граф, или Правильно ли я понимаю смысл IDREF?
    #33351616
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли я понимаю смысл IDREF?

Я его понимаю так: например, для описания графа

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<node id="234">
  <node idref="445">
  <node idref="878">
</node>
<node id="445">
</node>
<node id="878">
  <node idref="334">
</node>

Насколько я понял английский язык, вроде в спеках такое применение и имеется ввиду...

Если я не правильно понял, то как надо описывать граф в xml
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33351909
Фотография Грасов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33351936
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще меня плющит от спеки в том смысле, что мне кажется что

атрибут ID не может начинаться с цифры:

http://www.w3.org/TR/2004/REC-xml-20040204/#idValidity constraint: ID

Values of type ID MUST match the Name production. A name MUST NOT appear more than once in an XML document as a value of this type; i.e., ID values MUST uniquely identify the elements which bear them.

...

[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
[5] Name ::= ( Letter | '_' | ':') (NameChar)*

А Letter - понятно, что не Digit

Может ли быть атрибут типа "ID" только из цифр?
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33351985
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нельзя давать id только из цифр, то, может быть, есть какое-то правило или практика, какого вида надо давать идентификаторы элементам? типа <node id="node_234"/> или что-либо в этом роде?

И еще вопрос, по DOMу.

Оказывается, просто назвать атрибут "ID" - не значит сделать его атрибутом типа "ID"; метод getElementById не найдет нужный элемент. В доке Document Object Model Core сказано:

Document Object Model Core Note: The DOM implementation must have information that says which attributes are of type ID. Attributes with the name "ID" are not of type ID unless so defined. Implementations that do not know whether attributes are of type ID or not are expected to return null.Значит ли этот текст, что без описания документа в схеме в dtd или xsd не обойтись? И именно в схеме будет сказано, что атрибут id является атрибутом типа id? :(
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33356400
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я подумал, что лучше применить xPath и xPointer, типа так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<tree xmlns:xlink="http://www.w3.org/1999/xlink">

  <node>
    <nodeLnk xlink:type="locator" xlink:href="#xpointer(/tree/node[2])">
    <nodeLnk xlink:type="locator" xlink:href="#xpointer(/tree/node[3])">
  </node>

  <node>
  </node>

  <node>
    <nodeLnk xlink:type="locator" xlink:href="#xpointer(/tree/node[8])">
  </node>
  ...
</tree>

Правильно ли так? Можно ли так?

Мне нужно, во-первых, постараться обойтись без объявления структуры документа (предполагается, что она будет любая well-formed)
и во-вторых, избежать каких-либо кодов, которые свойственны только документу, но в базе, например, не сохраняются.
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33358437
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, по спецификации похоже, что id не может начинаться с цифры. Это и для меня было открытием :(. То есть чисто цифровой id не будет соответствовать типу ID, определенному в спецификации. Тем не менее, тем реализациям DOM, которые я видел, этот факт по барабану. Общепринятой практики наименований id не существует, насколько я знаю. Желательно, чтобы id соответствовал спецификации, но я проблем и с чисто цифровыми id не встречал. В Вашем примере с XPointer ссылка зависит от положения нода в списке, что не очень хорошо, т.к. если положение изменится, придется менять ссылку. Лучше сделать, чтобы соответствующее XPath выражение было завязано на id.
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33358488
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я динамически создаю id при помощи generate-id(.).
A потом, когда перезаписываю файл – удоляю.
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33358668
ежемуха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Да, от положения зависит, но пока-что этот файл сохраняется не для редактирования человеком, а для справки и для сохранения статуса. А чтобы ID был, нужно его объявлять в dtd, чего я хочу избежать.

С ID я тоже попробовал, в принципе нормально работает. Кстати, редактор JBuilder ругается, если в ID написать только цифры.

А вообще синтаксис ссылки xPath с применением xpointer() я угадал? Может, там две палки надо?
Код: plaintext
"#xpointer( // tree/node[2])"
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33358681
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Две палки - это поиск соответствующего нода по всему поддереву, их нужно применять с осторожностью, т.к. здорово отражаются на производительности.
В данном случае безусловно нужно применять одну палку.
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33358688
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обязательно объявлять. Сначала делаешь validation, а потом индексируешь свои nodes динамически.
Про поинтеры ничего не знаю, пока .
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33360425
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по айдишнику можно ссылаться и так: //*[@id='123']
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33360582
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так-то как раз и не стоит делать, о чем я писал выше.
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33813751
KPETuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot maXmo]по айдишнику можно ссылаться и так: //*[@id='123']


Парсер начнет лопатить весь допустим 20 метровый файл. К завтрашнему утру выдаст результат. Для этого Мелкософт и разработал оператор getElementById
...
Рейтинг: 0 / 0
Граф, или Правильно ли я понимаю смысл IDREF?
    #33817349
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только вот нетути такого оператора в хмл доме ни у микросакса, ни у кого ещё.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Граф, или Правильно ли я понимаю смысл IDREF?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]