XML сылка на элемент
Т.е.. Я поясню:
У нас есть, например, типы объектов. Я их описываю в XML документе. Как вы знаете, типы различаются именами (внешне). Т.е.
<Type name="lala">
...
</Type>
<Type name="baba">
...
</Type>
...
Потом мне надо описать объекты:
<Object name="babaObj" typeOf="baba"/>
В этом примере я в атрибуте typeOf пишу просто имя типа. Потом мне самому надо будет искать тип по имени.
Но мне посоветовал один чел, и сказал, что в XML есть подобие ссылок. Т.е. я могу сделать сразу ссылку на элемент Type.
У нас есть, например, типы объектов. Я их описываю в XML документе. Как вы знаете, типы различаются именами (внешне). Т.е.
<Type name="lala">
...
</Type>
<Type name="baba">
...
</Type>
...
Потом мне надо описать объекты:
<Object name="babaObj" typeOf="baba"/>
В этом примере я в атрибуте typeOf пишу просто имя типа. Потом мне самому надо будет искать тип по имени.
Но мне посоветовал один чел, и сказал, что в XML есть подобие ссылок. Т.е. я могу сделать сразу ссылку на элемент Type.
Наверное, это XPath и XLink, почитай на www.w3c.org
м.б. href ?
я не очень понял что именно тебе надо, из того что я понял, вот:
что значит самому искать? вот так
сложно?
Потом мне самому надо будет искать тип по имени.
что значит самому искать? вот так
selectSingleNode("//baba")
сложно?
Вот статья на эту тему.
что значит самому искать? вот так
Сорри, я имел ввиду, что надо искать (вообще)...
А слышал, что в XML поддерживает ссылки...
а ты не думал использовать XSLT вместо трансформационной схемы?
Надо посмотреть, на XSLT я еще не обращал внимание...
Хотя были предложения...
Посмотрю..
Тока по функциональности, мне же не надо хмл преобразовывать... А запрос...
Хотя были предложения...
Посмотрю..
Тока по функциональности, мне же не надо хмл преобразовывать... А запрос...
Ты сам то понимаешь, что тебе нужно?
Если задавать такие не ясные вопросы, то народ и будет тебе говорить всё, что сам об XML слышал типа XSLT, XLink, XPath и т.д.
Если хочешь узнать весь список технологий XML проще зайти на www.w3c.org
Если задавать такие не ясные вопросы, то народ и будет тебе говорить всё, что сам об XML слышал типа XSLT, XLink, XPath и т.д.
Если хочешь узнать весь список технологий XML проще зайти на www.w3c.org
В этом примере я в атрибуте typeOf пишу просто имя типа. Потом мне самому надо будет искать тип по имени.Адрес документа и XPath-путь внутри документа вполне достаточно, чтобы найти элемент и для этого достаточно одной команды, которую я написал. Если ты хочешь неуникальные имена для типов, тогда просто XPth-путь будет другой.
на самом деле XML поддерживает ссылки, только не помню как 

поддерживает ссылки
что это значит?
Спасибо за советы... Давай не будешь развращать тред пожалуйста...
На примере видно о чем я. Если хочешь повторю, но отвечать на мой пост не обязательно...
Команду которую ты написал - команда поиска, т.е. надо включать поиск !
А я спрашиваю про ССЫЛКИ ! с использованием, которых не НАДО ПОИСКА !
Ты сам же видишь, что это ПОИСК ПО ИМЕНИ ! КАКАЯ РАЗНИЦА - РЕАЛИЗОВАННО ЛИ ЭТО ГДЕ-ТО ИЛИ НАПИСАННО РУКАМИ (В ОБЩИХ ЧЕРТАХ)
ЗЫ: ПОЖАЛУЙСТА, не надо тут левый базар устраивать !
На примере видно о чем я. Если хочешь повторю, но отвечать на мой пост не обязательно...
Команду которую ты написал - команда поиска, т.е. надо включать поиск !
А я спрашиваю про ССЫЛКИ ! с использованием, которых не НАДО ПОИСКА !
selectSingleNode("//baba")
Ты сам же видишь, что это ПОИСК ПО ИМЕНИ ! КАКАЯ РАЗНИЦА - РЕАЛИЗОВАННО ЛИ ЭТО ГДЕ-ТО ИЛИ НАПИСАННО РУКАМИ (В ОБЩИХ ЧЕРТАХ)
ЗЫ: ПОЖАЛУЙСТА, не надо тут левый базар устраивать !
я был не совсем точен, не XML, а DTD.
можно указать, что такой-то атрибут должен быть ссылкой на id другого элемента
можно указать, что такой-то атрибут должен быть ссылкой на id другого элемента
А - он со мной работает в проекте, поэтому он упомянул чуток другую вещь, которая мне тоже нужна, но не тут
это всего лишь проверка целостности данных
я в курсе. Просто обрывок информыции в памяти всплыл, ща вот в мсдн уточнил.
ID - это ID - там надо метить, а потом на него ссылаться...
А моя "проблема", как если у меня есть Object как я могу присобачить ссылку так чтобы за "одну операцию" получить Node типа
А моя "проблема", как если у меня есть Object как я могу присобачить ссылку так чтобы за "одну операцию" получить Node типа
в твоем случае id - это значение атрибута name
в чем проблема, я же написал, имя берешь из значения атрибута
Давай допустим, у ТИПА нет имени даже...
тогда в атрибуте typeOf указываешь XPath-путь к нему (я об этом уже намекал)
гы... и как ты на него ссылаться собираешься?


Ну ты описываешь, то что я уже использую.
Т.е. описание объекта выглядет так:
<Object name="babaObj" typeOf="baba"/>
Потом я делаю:
selectSingleNode("//baba")
И получаю Ноде ТИПА...
Но я подразумеваю, что в описании ОБЪЕКТА должно быть типа:
<Object name="babaObj" typeOf=LINK>, какая-та ссылка...
И потом типа:
getNode(LINK)
Т.е. описание объекта выглядет так:
<Object name="babaObj" typeOf="baba"/>
Потом я делаю:
selectSingleNode("//baba")
И получаю Ноде ТИПА...
Но я подразумеваю, что в описании ОБЪЕКТА должно быть типа:
<Object name="babaObj" typeOf=LINK>, какая-та ссылка...
И потом типа:
getNode(LINK)
В том-то и вопрос состоит и СПРАШИВАЕТСЯ:
Есть ли такое?
Есть ли такое?
да, вариант. Но тогда без скриптинга не обойтись, и DTD, наверное, хрен сделаешь.
Кстати, в XSLT можно XPath брать из атрибута?
Кстати, в XSLT можно XPath брать из атрибута?
зачем скрипт?
DTD устарели, и зачем они здесь?
над вторым вопросом сейчас подумаю
DTD устарели, и зачем они здесь?
над вторым вопросом сейчас подумаю
с учетом того, что может указываться не имя, а XPath-путь, я не вижу разницы
ВОТ БОЛЕЕ ТОЧНЫЙ ПРИМЕР.
Раздел описания типа. Внутри типов находятся различные данные
<Type>
...
</Type>
<Type>
...
</Type>
<Type>
...
</Type>
...
<Object name="Obj" typeOf=LINK />
Можно ли так сделать, чтобы по LINK-у получить именно тот Node "Type". Если в XML такие ссылки?
Щя разберусь с этими Пасами, недавно тока пришел с лабы
Раздел описания типа. Внутри типов находятся различные данные
<Type>
...
</Type>
<Type>
...
</Type>
<Type>
...
</Type>
...
<Object name="Obj" typeOf=LINK />
Можно ли так сделать, чтобы по LINK-у получить именно тот Node "Type". Если в XML такие ссылки?
Щя разберусь с этими Пасами, недавно тока пришел с лабы
а как еще проверить что XML валиден?..
Вот, допустим его действительно прислала форма с DataBinding (Data Island) или это хакер злобно хакает сервак невалидным XML'ем?!
Вот, допустим его действительно прислала форма с DataBinding (Data Island) или это хакер злобно хакает сервак невалидным XML'ем?!
гы... и как ты на него ссылаться собираешься?
Мой вопрос: Есть ли в XML ссылки на Node?
блин... как ты себе это представляешь?
Если бы представлял, то не спрашивал бы...
А по поводу реализации этого, помойму можно такое сделать. И добавить это в DOM парсер.
А по поводу реализации этого, помойму можно такое сделать. И добавить это в DOM парсер.
да, на XPathe можно, но удовлетворит ли это тебя?
первый вариант, испльзовать порядок расположения.
По любому тебе надо как-то отличать элементы <Type>, вот как ты будешь устраивать это различие, это и будешь прописывать в XPath-е
первый вариант, испльзовать порядок расположения.
По любому тебе надо как-то отличать элементы <Type>, вот как ты будешь устраивать это различие, это и будешь прописывать в XPath-е
Кстати, в XSLT можно XPath брать из атрибута?нет, нельзя (хотя ошибаться может каждый
)Вообще, полгода назад я уже писал, не следует использовать XSLT по его не прямому назначению, дальше простых вещей вам не удастся продвинуться. Его прямое назначение - преобразования для отображения XML-документов (см. анатоцию к спецификации).
я думаю ответ нужно искать в xsd (dtd устарели связанной с этим xml документом
т.е. можно в xsd прописать как-нибуть так:
<element name="type"> .... </element>
<element name="object">
<complexType>
.....
<attribute name="ofType" type="NCTOKEN" mustRefToElement="type"/>
</complexType>
</element>
тогда в DOМ может и будет возможность для атрибута ofType получить не строку, а узел соотв типа
т.е. можно в xsd прописать как-нибуть так:
<element name="type"> .... </element>
<element name="object">
<complexType>
.....
<attribute name="ofType" type="NCTOKEN" mustRefToElement="type"/>
</complexType>
</element>
тогда в DOМ может и будет возможность для атрибута ofType получить не строку, а узел соотв типа
сто пудов
это прописано в в документации по DOM в Java:
In XML, where the value of an attribute can contain entity references, the child nodes of the Attr node may be either Text or EntityReference nodes (when these are in use; see the description of EntityReference for discussion).
Осталось только выяснить, как это оформить в схеме
это прописано в в документации по DOM в Java:
In XML, where the value of an attribute can contain entity references, the child nodes of the Attr node may be either Text or EntityReference nodes (when these are in use; see the description of EntityReference for discussion).
Осталось только выяснить, как это оформить в схеме
Рекомендуется использовать xsd (xml-scheme а не DTD
имхо: бред
посмотри спецификацю XML Schema, прежде чем "прописать как-нибуть так", а не придумывай свои атрибуты. Атрибута mustRefToElement нет.
посмотри спецификацю XML Schema, прежде чем "прописать как-нибуть так", а не придумывай свои атрибуты. Атрибута mustRefToElement нет.
так это была идея как это может быть.
я сам не знаю как это делается на самом деле.
в этом и вопрос состоит
я сам не знаю как это делается на самом деле.
в этом и вопрос состоит
> Такое бывает?
Можешь попробовать поюзать XPointer: http://www.w3.org/TR/WD-xptr
Можешь попробовать поюзать XPointer: http://www.w3.org/TR/WD-xptr
нашел: смотрите раздел 5.1 в http://www.w3.org/TR/xmlschema-0/
вернее раздел 5.2
ты не просек фишки
ну че, так сработает?
схема имеет след. вид:
...
<element name="type">
<complexType>
...
<attribute name="name" type="token"/>
</complexType>
</element>
<element name="object">
<complexType>
...
<attribute name="objOfType" type="token"/>
</complexType>
</element>
<key name="typeNameKey">
<selector xpath="type"/>
<field xpath="@name"/>
</key>
<keyref name="objOfTypeKeyref">
<selector xpath="object"/>
<field xpath="@objOfType"/>
</keyref>
....
вот только не уверен в xpath в selectore.
интересно, DOM Parser рюхнет, и если да, то будет идексировать по ключам (думаю, что XPathDocument в .Net индексирует)
Ельдар, проверить не хочешь?
схема имеет след. вид:
...
<element name="type">
<complexType>
...
<attribute name="name" type="token"/>
</complexType>
</element>
<element name="object">
<complexType>
...
<attribute name="objOfType" type="token"/>
</complexType>
</element>
<key name="typeNameKey">
<selector xpath="type"/>
<field xpath="@name"/>
</key>
<keyref name="objOfTypeKeyref">
<selector xpath="object"/>
<field xpath="@objOfType"/>
</keyref>
....
вот только не уверен в xpath в selectore.
интересно, DOM Parser рюхнет, и если да, то будет идексировать по ключам (думаю, что XPathDocument в .Net индексирует)
Ельдар, проверить не хочешь?
XML-документы хюмен ридбл, поэтому как ты себе представляешь экземпляр документа, которго ты хочешь? от этого и отталкивайся. Схема накладывает лишь ограничения целостности.
Мой прогноз: работа не будет
Мой прогноз: работа не будет
причем тут индексирование я ваще не понял
документ такой же, только в нем не должны повторяться имена типов.
а индексирование тем, чтобы это оганичение эффективно тестить при построении DOM дерева и возможно потом при реализации метода getChild у соотв Attr.
а индексирование тем, чтобы это оганичение эффективно тестить при построении DOM дерева и возможно потом при реализации метода getChild у соотв Attr.
что значчит такой же? такой как в первом посте? или что?
Короче, работать не будем, можем поспорить на пиво
Короче, работать не будем, можем поспорить на пиво
работает, я провел, в .Net мне xsd.exe по этой схеме делает классы module. TypeType, ObjecType и работает потом Xml сериализация
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="moduleSchema" targetNamespace="http://tempuri.org/moduleSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/moduleSchema.xsd" xmlns:mstns="http://tempuri.org/moduleSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="module">
<xs:complexType>
<xs:sequence>
<xs:element name="types">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="TypeType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="objects">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="ObjectType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="typeNameKey" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:type" />
<xs:field xpath="@name" />
</xs:key>
<xs:key name="objectNameKey" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:object" />
<xs:field xpath="@name" />
</xs:key>
<xs:keyref name="objectOfTypeKeyref" refer="typeNameKey">
<xs:selector xpath=".//mstns:object" />
<xs:field xpath="@objectOfType" />
</xs:keyref>
</xs:element>
<xs:complexType name="TypeType">
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
<xs:complexType name="ObjectType">
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="objectOfType" type="xs:string" />
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="moduleSchema" targetNamespace="http://tempuri.org/moduleSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/moduleSchema.xsd" xmlns:mstns="http://tempuri.org/moduleSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="module">
<xs:complexType>
<xs:sequence>
<xs:element name="types">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="TypeType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="objects">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="ObjectType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="typeNameKey" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:type" />
<xs:field xpath="@name" />
</xs:key>
<xs:key name="objectNameKey" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:object" />
<xs:field xpath="@name" />
</xs:key>
<xs:keyref name="objectOfTypeKeyref" refer="typeNameKey">
<xs:selector xpath=".//mstns:object" />
<xs:field xpath="@objectOfType" />
</xs:keyref>
</xs:element>
<xs:complexType name="TypeType">
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
<xs:complexType name="ObjectType">
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="objectOfType" type="xs:string" />
</xs:complexType>
</xs:schema>
маза в том, что эту схема в дезайнере схем сваял в VS
Классы-то делает, но вот ссылок как раз и не видно.
DOM я не смотрел, а XmlSerializer не поддерживает циклические ссылки 
Но в схеме связи выражаются через key и keyref как в присере, что я написал

Но в схеме связи выражаются через key и keyref как в присере, что я написал
Пиздец, в начале треда вам теребовались ссылки , теперь вы говорите о том как в .Net-те идет XML-сериализация. Я хуею с вас товарищи, чё вам надо, зачем было этот тред заводить?
увлексяа похоже делает через селект как раньше предложили
Оставить комментарий
rid2000
Такое бывает?Мне сказали, что есть на подобие того... Но я не могу найти инфу пока...
Если такое есть, то как это записать в схеме?...
Я ща ищу инфу, нужна срочно. Если поможете в поиске, буду примного благодарен