Jump to content

XML-каталог

XML- документы обычно ссылаются на внешние объекты, например общедоступный и/или системный идентификатор для определения типа документа . Эти внешние связи выражаются с помощью URI, обычно в виде URL-адресов.

Однако абсолютные URL-адреса работают только тогда, когда сеть может их достичь. Использование удаленных ресурсов делает обработку XML уязвимой как к плановым, так и к незапланированным простоям сети.

Относительные URL-адреса полезны только в том контексте, в котором они были изначально созданы. Например, URL-адрес «../../xml/dtd/docbookx.xml» обычно будет полезен только в очень ограниченных случаях.

Один из способов избежать этих проблем — использовать преобразователь сущностей (стандартная часть SAX ) или преобразователь URI (стандартная часть JAXP ). Резолвер может проверять URI запрашиваемых ресурсов и определять, как лучше всего удовлетворить эти запросы. Каталог XML — это документ, описывающий сопоставление между ссылками на внешние сущности и локально кэшированными эквивалентами. [ 1 ]

Пример каталога.xml

[ редактировать ]

В следующем простом каталоге показано, как можно предоставить локально кэшированные DTD, например, для инструмента проверки страницы XHTML.

 
  <?xml version="1.0"?>
  <!DOCTYPE catalog
    PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
           "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">

  <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
           prefer="public">

    <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN"
            uri="dtd/xhtml1/xhtml1-strict.dtd"/>

    <public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
            uri="dtd/xhtml1/xhtml1-transitional.dtd"/>

    <public publicId="-//W3C//DTD XHTML 1.1//EN"
            uri="dtd/xhtml11/xhtml11-flat.dtd"/>

  </catalog>

Этот каталог позволяет решить -//W3C//DTD XHTML 1.0 Strict//EN к локальному URI dtd/xhtml1/xhtml1-strict.dtd. Аналогичным образом он предоставляет локальные URI для двух других общедоступных идентификаторов.

Обратите внимание, что приведенный выше документ включает DOCTYPE – это может привести к тому, что анализатор попытается получить доступ к URL-адресу системного идентификатора для DOCTYPE (т. е. http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd) до того, как преобразователь каталога заработает полностью, что, вероятно, нежелательно. Чтобы предотвратить это, просто удалите объявление DOCTYPE.

Следующий пример показывает это, а также показывает эквивалент <system/> декларации как альтернатива <public/> декларации.

  <?xml version="1.0"?>
  <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

    <system systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
            uri="dtd/xhtml1/xhtml1-strict.dtd"/>

    <system systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
            uri="dtd/xhtml1/xhtml1-transitional.dtd"/>

    <system systemId="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
            uri="dtd/xhtml11/xhtml11-flat.dtd"/>

  </catalog>

Использование каталога — пример Java SAX

[ редактировать ]

Резолверы каталогов доступны для различных языков программирования. В следующем примере показано, как в Java SAX для анализа некоторого источника входных данных, в котором можно создать анализатор org.apache.xml.resolver.tools.CatalogResolver используется для преобразования внешних объектов в локально кэшированные экземпляры. Этот преобразователь создан на основе Apache Xerces , но теперь включен в среду выполнения Sun Java.

Необходимо создать SAXParser стандартным способом с использованием фабрик. Для преобразователя объектов чтения XML должно быть установлено значение по умолчанию или пользовательское значение.

  final SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
  final XMLReader reader = saxParser.getXMLReader();

  final ContentHandler handler = ...;
  final InputSource input = ...;

  reader.setEntityResolver( new CatalogResolver() );
  reader.setContentHandler( handler );
  reader.parse( input );

Важно позвонить в parse метод на считывателе, а не на анализаторе SAX.

  1. ^ Уолш, Норман (7 октября 2005 г.). «XML-каталоги OASIS Standard V1.1» (PDF) . ОАЗИС (pdf) . Проверено 4 ноября 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1bc81659d8568c43d5d28e7943be5198__1708136640
URL1:https://arc.ask3.ru/arc/aa/1b/98/1bc81659d8568c43d5d28e7943be5198.html
Заголовок, (Title) документа по адресу, URL1:
XML catalog - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)