powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Валидация содержимого (HTML разметки) элемента с помощью XML Schema
25 сообщений из 41, страница 1 из 2
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37757832
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файл XML, который заполняет поставщик (в нем находится описание товаров, причем описание может быть в формате HTML). После того, как файл загружен на сервер, его обрабатывает робот, показывает в контейнере HTML разметку - описание товара, взятую из XML.

Необходимо каким-то образом проверять (с помощью схемы, если можно, еще на стадии валидации XML файла) содержимое HTML, по сути, проверяем валидный (закрыты ли все открытые теги и т.п.) ли HTML код находится в одном из элементов XML файла или нет.

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

Есть идеи? Может кто-то уже делал подобное? Задача, мне кажется, распространенная.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37757861
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть незакрытые теги и прочие проблемы синтаксиса, xml-процессор выдаст ошибку при загрузке документа. Ее можно вернуть нерадивому клиенту с просьбой исправить. В чем проблема?
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37757921
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND,

про TIDY почитайте, одно из свойств делать из обычного HTML валидный XHTML, когда пользоваться ее услугами - решать вам, при закачке клиентом контента, перед загрузкой в дом... решать вам.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37759845
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lan,

Нашел в документации два способа, но не знаю каким воспользоваться.

Первый способ:
Схема
Код: xml
1.
2.
3.
4.
5.
6.
7.
<xs:element name="ManufacturerDescription">
                    <xs:complexType mixed="true">
                        <xs:complexContent>
                            <xs:extension base="xs:anyType"/>
                        </xs:complexContent>
                    </xs:complexType>
                </xs:element>




Содержимое файла XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<ManufacturerDescription >           
        <H1>ООО «ЗАЛУПКИН»</H1>
        <div>Советская, д. 17
        121000, Москва
            <ope>этот тег неизвестный для схемы http://www.w3.org/1999/xhtml</ope>
        Россия
        </div>        
    </ManufacturerDescription>



Парсер ничего не говорит, т.е. все в порядке, все проходит по схеме, но проходят любые теги, т.к. нет определяющей схемы пространства имен для xHTML.

Второй способ:
Схема
Код: xml
1.
2.
3.
4.
5.
6.
7.
 <xs:element name="ManufacturerDescription">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="strict" minOccurs="1" maxOccurs="unbounded"></xs:any>                            
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>



Содержимое файла XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<ManufacturerDescription >           
        <H1 xmlns="http://www.w3.org/1999/xhtml">ООО «ЗАЛУПКИН»</H1>
        <div>Советская, д. 17
        121000, Москва
            <ope>этот тег неизвестный для схемы http://www.w3.org/1999/xhtml</ope>
        Россия
        </div>        
    </ManufacturerDescription>



Парсер выдает ошибку для <div>-ва, т.к. в нем не указано явно пространство имен. Как сделать так, чтобы пользователь, когда записывал значения в это поле файла не утруждался и не писал каждому тегу пространство имен? Причем тег <H1> проходит только, если атрибут processContents="skip", а при processContents="strict" ругается, даже не смотря на, явное указание пространства имен.

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

Нужно, со вторым вариантом схемы прийти к такому:
Содержимое файла XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<ManufacturerDescription >           
        <h1>ООО «ЗАЛУПКИН»</h1>
        <div>Советская, д. 17
        121000, Москва
            <ope>этот тег неизвестный для схемы http://www.w3.org/1999/xhtml</ope> - здесь парсер должен ругаться!
        Россия
        </div>        
    </ManufacturerDescription>




Помогите!
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37760089
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<body xmlns="http://www.w3.org/1999/xhtml">
  <H1>ООО «ЗАЛУПКИН»</H1>
  <div>Советская, д. 17
     121000, Москва
        <ope>этот тег неизвестный для схемы http://www.w3.org/1999/xhtml</ope>
    Россия
    </div>
</body> 
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37760935
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Работает, спасибо! Существует ли другой способ (например, где-то в схеме прописать или как-нибудь обертывать автоматически контент)?

Сразу вопрос вдогонку. Как составить регулярное выражение, чтобы на этапе валидации содержимое HTML было невелидным, если встречается <a href="любой URI".....> и <img src="любой URI">?
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761530
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND(например, где-то в схеме прописать или как-нибудь обертывать автоматически контент)?Схема не создает контента, поэтому все вопросы к тому, кто этот XML создает
Santa_RNDКак составить регулярное выражение, чтобы на этапе валидации содержимое HTML было невелидным, если встречаетсяЯвно перечислить все допустимые элементы
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761532
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Ок. А что делать с ссылками и изображениями, как их проверять на этапе валидации?
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761554
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RNDОк. А что делать с ссылками и изображениями, как их проверять на этапе валидации?А как Вы хотите их проверять?
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761564
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

У поставщиков-клиентов, которые заполняют описание копирайтеры могут по ошибке вставить HTML, содержащий какой-либо CTRL+C | CTRL+V кусок размести (в том числе ссылки и изображения). Нужно, чтобы схема умела говорить - "Поле такое-то содержит запрещенные теги (<a>, <img>)". То что на стороне сервера будет это уже другой вопрос, хочется клиенту сообщать о том, что он не прав на этапе валидации схемой. Надеюсь, доступно объяснил.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761659
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RNDхочется клиенту сообщать о том, что он не прав на этапе валидации схемой._Vasilisk_Явно перечислить все допустимые элементы
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761663
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Благодарю. Надеялся, что можно по-другому, но нет(
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37761699
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND,

Можете пример привести, как правильно все допустимые теги перечислить в схеме для содержимого Element "ManufacturerDescription"? Я так понимаю, нужно первый вариант будет использовать (без указания пространства имен - http://www.w3.org/1999/xhtml)?
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37762080
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно определить отдельную схему в пространстве имен http://www.w3.org/1999/xhtml)?%5Dhttp://www.w3.org/1999/xhtml(%D0%B8%D0%BB%D0%B8]http://www.w3.org/1999/xhtml)?]http://www.w3.org/1999/xhtml(или скачать ее с w3c) и проимпортировать єту схему в основную

RTFM xsd:import
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37762087
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

можно пример? сроки горят, я третий день, как с XML Schema сзязался, пока еще не в зуб ногой(
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37762108
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RNDможно пример?Две схемы с различными targetNamespace

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<xsd:schema targetNameSpace="http://www.w3.org/">

  <xsd:element name="html"/>

</xsd:schema>

<xsd:schema targetNameSpace="my:uri"
  xmlns:w3="http://www.w3.org/">

  <xsd:import namespace="http://www.w3.org/" schemaLocation="w3.xsd" />
  <xsd:element name="root">
    ..................
      <xsd:element ref="w3:html"/>
    .............
  </xsd:element>

</xsd:schema>
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37762114
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Кажется, понял. Попробую, обязательно отпишусь о своих успехах.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766201
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

пришли, пожалуйста, свою почту в личку, вышлю схему и тестовый файл с данными, что-то никак не получается( Ругается на то, что не может схемы забрать из URI.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766284
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь к сообщению можно прикреплять файлы
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766299
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

ок. сразу не заметил.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766300
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND,
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766302
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND,

sample
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766389
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RND,

Сравните это
Код: xml
1.
<xs:include schemaLocation="http://www.w3.org/1999/xhtml"></xs:include>


и это
_Vasilisk_
Код: xml
1.
<xsd:import namespace="http://www.w3.org/" schemaLocation="w3.xsd" />

и найдите отличия
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766404
Фотография Santa_RND
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

w3.xsd - так эту схему нужно скачать и положить в какую-то директорию? где ее взять?

schemaLocation="w3.xsd" - говорит о том, что схема лежит в той же папке или я не прав?

что-то запутался.
...
Рейтинг: 0 / 0
Валидация содержимого (HTML разметки) элемента с помощью XML Schema
    #37766496
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa_RNDчто-то запутался.
_Vasilisk_
Код: javascript
1.
<xs:include schemaLocation="http://www.w3.org/1999/xhtml"></xs:include>


_Vasilisk_
Код: javascript
1.
<xsd:import namespace="http://www.w3.org/" schemaLocation="w3.xsd" />
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Валидация содержимого (HTML разметки) элемента с помощью XML Schema
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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