| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
ГЛАВА 5 Создание валидных XML-документов
Валидные XML-документы отвечают более строгому набору критериев, чем обычные корректно сформированные документы, с которыми вы имели дело в предыдущих главах. В этой: главе вы прежде всего познакомитесь с основными требованиями дл.я валидных XML-документов и оцените преимущества валидных документов. Затем вы узнаете, как объявлять тип документа для всех валидных XML-документов. После этого будут представлены подробные инструкции по определению элементов и атрибутов в валидном документе. В завершение вы выполните упражнение по преобразованию документа, созданного вами в главе 2, в валидный документ. В шестой главе зы узнаете, как объявлять и использовать примитивы, которые являются не обязательными, но весьма полезными компонентами валидных XML-документов.
Основной критерий для валидного документа Каждый XML-документ должен быть корректно сформированным, т.е. отвечать минимальным требованиям по составлению XML-документа. Если документ не является корректно сформированным, он не может считаться XML-документом. Корректно сформированный XML-Документ также может быть валидным. Валидным (valid) называется корректно сформированный (well-formed) документ, отвечающий двум дополнительным требованиям:
В последующих разделах этой главы, а также в главе 6, вы узнаете, как создавать документы, отвечающие этим двум общим требованиям.
Требования корректности формирования и валидности Требования корректности формирования представляют собой набор правил, определенных в спецификации XML в дополнение к основным синтаксическим требованиям. Поскольку XML-документ должен быть корректно сформированным, любое отклонение от требований корректности формирования считается фатальной ошибкой (fatal error). Если XML-процессор сталкивается с фатальной ошибкой, он останавливает нормальную обработку документа и не пытаться ее во зобновить. Требования валидности представляют собой дополнительный набор правил в спецификации XML, которым вы должны следовать, чтобы создать валидный документ. Поскольку валидность является не обязательной для XML-документа, отклонение от требований валидноcти считается лишь ошибкой (error), но не фатальным сбоем. Если XML- процессор встречает ошибку, он может просто выдать сообщение о ней и продолжить обработку. Требования валидности состоят из специальных правил по созданию соответствующего объявления типа с его DTD, а также созданию документа, отвечающего описанию внутри вашего DTD.
Преимущества использования валидных ХМ L- документов Может показаться, что при создании валидного XML-документа выполняется ряд лишних действий: вы должны сначала полностью описать структуру документа в DTD, а затем создать сам документ, отвечающий всем спецификациям, содержащимся в DTD. Может сложиться впечатление, что гораздо проще непосредственно добавлять любые необходимые элементы и атрибуты, как при работе с корректно сформированными документами в предыдущих главах. Однако, если вы хотите быть уверенным, что ваш документ отвечает определенной структуре или набору стандартов, включение DTD, которое описывает эту структуру, дает возможность XML-процессору (например, Microsoft Internet Explorer 5) проверить, соответствует ли документ структуре. Другими словами, DTD обеспечивает стандартный шаблон для процессора, чтобы при проверке валидности он мог следовать требуемой структуре и гарантировать, что ваш документ соответствует установленным стандартам. Если какая-либо часть документа не отвечает DTD-cne-цификации, процессор может отобразить сообщение об ошибке, чтобы вы могли отредактировать документ и исправить несоответствия. Использование валидных документов особенно полезно для проверки однородности среди группы схожих документов. Фактически, стандарт XML определяет DTD как «грамматику для определенного класса документов». Предположим, компании, занимающейся публикацией в Web, требуется, чтобы все ее редакторы создавали XML-документы, .отвечающие единой структуре. Создание одного DTD и включение его во все документы может обеспечить условия соответствия документов требуемой структуре, в то время как редакторы будут избавлены от необходимости добавлять новые элементы, помещать информацию в неправильном порядке, присваивать неправильные типы данных и т.д. Конечно, валидность документа должна быть проверена при его обработке процессором. Включение DTD и проверка валидности имеют особое значение, если документ будет обрабатываться программой пользователя, ориентированной на определенную структуру документа. Если все пользователи программного обеспечения включат в свои XML-документы соответствующие DTD, и все документы пройдут проверку на валидность, то пользователи могут быть уверены, что их документы будут распознаны программой-обработчиком. Например, если группа математиков создает математические документы, которые будут отображаться специальной программой, все они могут включить в свои документы одинаковые DTD, которые содержат определения требуемой структуры, элементов, атрибутов и других компонентов. На деле большинство реальных XML-приложений, список которых приведен в конце главы 1, например, MathML, состоят из стандартного DTD, которое все пользователи приложения включают в свои XML-докумен-тьг, чтобы при проверке валидности обеспечивалось соответствие структуре приложения, и документы были распознаны любой программой, разработанной для этого приложения. Совет. Если вы открываете XML-документ (самостоятельный или с присоединенной таблицей стилей) непосредственно в Internet Explorer 5, процессор Internet Explorer 5 проверяет весь документ (в том числе объявление типа документа, если оно присутствует) на корректность формы составления, и выводит сообщение о фатальной ошибке при любом обнаруженном несоответствии. Однако процессор Internet Explorer 5 не проверяет документ на валидность. Чтобы проверить документ на валидность, вы можете использовать сценарий проверки на валидность, приведенный в главе 9 в разделе «Проверка валидности XML-документа». Прочтите приведенные в этом разделе указания уже сейчас, чтобы проверять на валидность ваши XML-документы.
Добавление DTD Объявление типа документа представляет собой блок XML-разметки, который вы должны добавить в пролог валидного XML-документа. Он может располагаться в любом месте пролога - вне другой разметки - после XML-объявления, как показано на следующем рисунке. (Напомним, что если вы включаете XML-объявление, оно должно располагаться в начале документа.)
Объявление типа документа определяет структуру документа. Если вы открываете документ, не содержащий объявления типа, в Internet Explorer 5, процессор Internet Explorer 5 всего лишь осуществляет проверку документа на корректность формы составления. Если же вы открываете документ, содержащий объявление типа документа, процессор Internet Explorer 5 будет проверять документ на валидность вместе с проверкой на корректность формы составления, так что ваш документ должен отвечать всем имеющимся декларациям в объявлении типа документа. Так, вы не сможете включить в документ какие-либо элементы или атрибуты, если вы не объявили их в объявлении типа документа. Каждый элемент и атрибут, который вы включаете, должен соответствовать спецификации (например, допустимости применения данного содержимого элемента или типа атрибута), выраженной в соответствующем объявлении. Примечание. Процессор Internet Explorer 5 проверяет документ на валидность только в том случае, если вы открываете документ через HTML Web-страницу (с использованием техники, с которой вы познакомитесь в главах 8 и 9). Если вы открываете XML-документ непосредственно в Internet Explorer 5, процессор будет проверять документ (включая любое объявление типа документа, которое он содержит) на корректность формы составления, но не будет проверять документ на валидность, даже если он содержит объявление типа документа.
Форма записи DTD Объявление типа документа имеет следующую обобщенную форму записи:
Здесь Имя указывает на имя элемента Документ. Имя действительного элемента Документ должно в точности соответствовать имени, записанному в объявлении. (Правила, в соответствии с которыми следует выбирать имена элементов, приведены в разделе «Анатомия элемента» в главе 3.) Например, если вы объявляете тип документа для документа, рассмотренного в предыдущем разделе, вам следует использовать имя INVENTORY:
(Это еще не законченное объявление типа документа. DTD следует заменить реальным содержимым.) DTD представляет собой определение типа документа, которое содержит объявления, задающие элементы документа, атрибуты и другие компоненты. В следующем разделе вы познакомитесь с формой их записи. Примечание. Подобно всем ключевым словам XML, DOCTYPE должно быть набрано прописными буквами.
Создание DTD DTD состоит из символа левой квадратной скобки ([), после которой следует ряд объявлений разметки, заканчивающихся правой квадратной скобкой (]). Объявления разметки описывают логическую структуру документа, т.е. задают элементы документа, атрибуты и другие компоненты. На следующем рисунке приведен законченный валидный XML-доку-мент, содержащий DTD с единственным объявлением разметки, которое определяет один тип элемента в документе, SIMPLE.
DTD в этом примере документа указывает, что документ может содержать только элементы типа SIMPLE (это единственный заданный тип элемента), и что элемент SIMPLE может иметь любое допустимое для данного типа содержимое (ключевое слово ANY). DTD может содержать следующие типы объявлений разметки.
Примечание. Типы DTD, обсуждаемые в этом разделе (и используемые в примерах в последующих разделах), относятся к внутреннему подмножеству DTD, поскольку полностью включаются в объявление типа данного документа. В конце этой главы вы узнаете, как использовать DTD, размещенные в отдельном файле, и относящиеся к внешнему подмножеству DTD.
Объявление типов элементов В валидном XML-документе вы должны полностью объявить тип каждого элемента, который вы используете в документе, в объявлении типа элемента внутри DTD. Объявление типа элемента указывает на имя типа : элемента и допустимое содержимое элемента (часто описывающее порядок размещения дочерних элементов). В целом, объявление типа элемента в DTD задает полную логическую структуру документа. Таким обрамим, объявление типа элемента указывает на типы элементов, которые содержит документ, порядок следования элементов, а также описание содержимого элементов.
Форма записи объявления типа элемента Объявление типа элемента имеет следующую обобщенную форму:
Здесь Имя есть имя объявляемого типа элемента. (Свод правил по правильному заданию имен элементов приведен в разделе «Анатомия элемента» в главе 3.) Опись одержимого - это описание содержимого, которое определяет, что может содержать элемент. В следующем разделе приведены различные типы описаний содержимого, которые вы можете использовать. Ниже приведено объявление типа элемента с именем TITLE, для содержимого которого могут использоваться только символьные данные (дочерние элементы не допускаются):
А вот объявление для типа элемента с именем GENERAL, содержимое которого может быть любым:
В качестве последнего примера рассмотрим законченный XML-документ с двумя типами элементов. Объявление типа элемента COLLECTION указывает, что он может содержать один или несколько элементов CD, a объявление типа элемента CD указывает, что он может содержать только символьные данные. Заметим, что документ соответствует этим объявлениям, и, следовательно, является валидным:
Примечание. Вы можете объявить определенный тип элемента в данном документе только один раз.
Описание содержимого элемента Вы можете описать содержимое элемента - т.е. заполнить часть описъ_содер-жимого в объявлении типа элемента - четырьмя различными способами.
Задание содержимого элемента Если элемент имеет содержимое, он может непосредственно содержать только определенные дочерние элементы, но не символьные данные. В тексте документа вы можете разделять дочерние элементы пробелами, чтобы улучшить восприятие документа, но процессор будет игнорировать символы пробела и не передаст их приложению. Рассмотрим следующий пример XML-документа, описывающий одну книгу:
В этом документе тип элемента BOOK объявлен как имеющий содержимое элемента. (TITLE, AUTHOR), следующие за именем элемента в объявлении, составляют модель содержимого. Модель содержимого указывает на разрешенные типы дочерних элементов и их порядок. В этом примере модель содержимого указывает на то, что элемент BOOK должен иметь ровно один дочерний элемент TITLE, за которым следует ровно один дочерний элемент AUTHOR. При обработке документа процессор игнорирует три пустых строки, используемые для разделения дочерних элементов внутри элемента BOOK. Модель содержимого может иметь одну из следующих основных форм.
Следовательно, следующий элемент Документ будет валидным:
Следующий элемент Документ, однако, не будет валидным, поскольку порядок дочерних элементов не соответствует объявленному:
Пропуск дочернего элемента или использование одного и того же типа дочернего элемента более одного раза также недопустимо. Как вы видите, это достаточно строгий вид объявления.
Следовательно, следующий элемент Документ будет валидным:
как и элемент:
а также элемент:
Следующий элемент Документ не будет валидным, поскольку вы можете включить только один из дочерних элементов:
Вы можете изменить любую из этих форм модели содержимого, используя знак вопроса (?), знак плюс (+) и звездочку (*), значения которых описаны в следующей таблице:
Например, следующее объявление означает, что вы можете включить один или более дочерних элементов NAME, и что дочерний элемент HEIGHT является не обязательным:
Таким образом, следующий элемент будет правильным:
Другой пример: следующее объявление означает, что вы можете включить несколько или ни одного дочернего элемента STAR, либо один дочерний элемент NARRATOR, либо один дочерний элемент INSTRUCTOR:
Соответственно, каждый из следующих трех элементов будет корректным:
Вы также можете воспользоваться символами ?, + или * для модификации всей модели содержимого, помещая символы непосредственно после закрывающих скобок. Например, следующее объявление дает вам возможность включить один или несколько дочерних элементов любого из этих трех типов в любом порядке:
Такое объявление делает корректными следующие элементы:
Наконец, вы можете формировать более сложные модели содержимого путем вложения выборочной модели содержимого внутрь последовательной модели, либо последовательной модели в выборочную модель. Например, следующее DTD задает, что каждый элемент FILM должен иметь ()дин дочерний элемент TITLE; за ним должен следовать один дочерний элемент CLASS; после него должен идти один дочерний элемент STAR, N Л RRATOR или INSTRUCTOR:
В соответствии с этим DTD, следующий элемент Документ будет корректным:
так же, как такой:
Задание смешанного содержимого Если элемент имеет смешанное содержимое, он может включать символьные данные. Если же вы зададите в объявлении один или несколько типов дочерних элементов, он может содержать любые из этих дочерних элементов в любом порядке и с любым количеством вхождений (нуль и более). Другими словами, при смешанном содержимом вы можете задавать типы дочерних элементов, но не можете задавать порядок или количество вхождений дочерних элементов, а также задавать обязательность включения для определенных типов дочерних элементов. Чтобы объявить тип элемента смешанного содержимого, вы можете воспользоваться одной из следующих форм модели содержимого.
Заметим, что элемент, который в соответствии с объявлением должен содержать символьные данные, может и не иметь никаких символов, т.е. быть пустым. Примечание. Ключевое слово PCDATA относится к синтаксически анализируемым (разбираемым) символьным данным. Из главы 3 вам известно, что XML-процессор синтаксически разбирает символьные данные внутри элемента, т.е. сканирует элемент в поиске XML-разметки. В связи с этим вы не можете использовать правую угловую скобку (<) или знак амперсанда (&) или символы ]]> как часть символьных данных, поскольку синтаксический анализатор будет интерпретировать каждый из этих символов или группы символов как разметку. Однако вы можете использовать любые символы с помощью ссылки на символ или на предопределенный примитив (см. главу 6) или с помощью раздела CDATA (см. главу 4).
Объявление атрибутов В валидном XML-документе вы также должны исчерпывающе объявить все атрибуты, которые вы предполагаете использовать для элементов документа. Вы определяете все атрибуты, ассоциированные с определенным элементом, с помощью специального типа DTD-разметки, называемого объявлением списка атрибутов. Это объявление:
Форма записи объявления списка атрибутов Объявление списка атрибутов имеет следующую общую форму:
Здесь Имя представляет собой имя элемента, ассоциированного с атрибутом или атрибутами. OnpAmp - это одно или несколько определений атрибутов, каждое из которых определяет один атрибут. Определение атрибута имеет следующую форму записи:
Здесь Имя представляет собой имя атрибута. (Правила выбора имен атрибутов приведены в разделе «Правила создания атрибутов в главе 3.) OnpAmp представляет собой тип атрибута, т.е. виды значений, которые могут быть присвоены атрибуту. (О типах атрибутов пойдет речь в следующем разделе.) ОбъявУмолч - это объявление по умолчанию, которое указывает на востребованность атрибута и содержит другую информацию. (Об этом будет рассказано далее в этой главе.) Допустим, вы объявили тип элемента с именем FILM следующим образом:
Вот пример объявления списка атрибутов, которое описывает два атрибута - Class и Year - для элемента FILM:
На следующем рисунке представлены составные части этого объявления.
Вы можете присвоить атрибуту Class любую строку в кавычках (ключевое слово CDATA); если вы опускаете атрибут для определенного элемента, ему будет автоматически присвоено значение по умолчанию «fictional». Вы можете присвоить атрибуту Year любую строку в кавычках; этот атрибут, однако, должен быть обязательно присвоен для каждого элемента FILM (ключевое слово #REQUIRED), поэтому он не имеет значения по умолчанию. Следующий полный XML-документ включает это объявление списка атрибутов, а также элемент FILM:,
Для элемента FILM атрибуту Year присвоено значение «1948». Атрибут Class опущен; однако, поскольку этот атрибут имеет значение по умолчанию («fictional»), оно присваивается атрибуту, как если бы вы записали его в качестве значения атрибута. Примечание. Если вы использовали для данного типа элемента более одного объявления списка атрибутов, содержания двух объявлений объединяются. Если атрибут с заданным именем объявлен для одного и того же элемента несколько раз, первое объявление используется, а последующие - игнорируются. (Множественные объявления списков атрибутов могут иметь место, если документ имеет как внутренние, так и внешние DTD, о чем пойдет речь далее в этой главе.)
Тип атрибута Тип атрибута является вторым необходимым компонентом в определении атрибута. Он задает вид значений, которые вы можете присваивать атрибуту внутри документа, как показано на следующем рисунке.
Вы можете задавать тип атрибута тремя различными способами.
Задание маркерного типа Как и любое значение атрибута, значение, которое вы присваиваете маркерному типу атрибута, должно представлять собой строку в кавычках, отвечающую общим правилам, описанным в разделе «Правила для корректного задания значений атрибутов» в главе 3. Кроме того, значение должно отвечать определенному ограничению, которое вы задаете в описании атрибута с помощью соответствующего ключевого слова. Например, в приведенном ниже XML-документе для атрибута StockCode определен маркерный тип с использованием ключевого слова ID. (ID - это только одно из ключевых слов, которые вы можете использовать для объявления маркерного типа.) Это ключевое слово означает, что для каждого элемента атрибуту должно быть присвоено уникальное значение. (Например, присвоение товарного кода «S021» двум элементам ITEM не допускается.)
Ниже приведен полный список ключевых слов, которые вы можете использовать в определении маркерных типов атрибутов, и ограничения, которые они накладывают на значения атрибутов.
Далее вы можете использовать этот атрибут для ссылки на другой элемент ITEM:
то можете использовать его на ссылки на несколько других элементов:
Задание нумерованных типов Как любое значение атрибута, значение, которое вы присваиваете нумерованному типу, должно представлять собой строку в кавычках, отвечающую правилам, описанным в разделе «Правила для корректного задания значений атрибутов» в главе 3. Помимо этого, значение должно совпадать с одним из имен, приведенных в списке типов атрибутов. Эти имена могут иметь одну из следующих двух форм записи.
Вот законченный XML-документ, демонстрирующий использование атрибута Class:
Если вы опустили атрибут Class, ему будет по умолчанию присвоено значение «fictional». Присвоение атрибуту Class значения, отличного от «fictional», «instructional» или «documentary», приведет к ошибке.
Присвоение атрибуту Format значения, отличного от «HTML», «SGML» или «RTF», приведет к ошибке. (Обратите внимание на использование здесь раздела СВАТА — при этом вы можете свободно использовать символ левой угловой скобки (<) внутри символьных данных элемента.)
Объявление значения по умолчанию Объявление значения по умолчанию - это третий и последний обязательный компонент в определении атрибута. Оно задает, является ли атрибут обязательным, и если нет, указывает, что должен предпринимать процессор в случае, когда атрибут опущен (см. рисунок ниже). Так, объявление должно обеспечить значение атрибута по умолчанию, которое будет использовать процессор в том случае, если атрибут отсутствует.
Объявление значения по умолчанию может иметь следующие четыре формы:
Использование внешних подмножеств DTD Описания типа документа, рассмотренные нами в этой главе, полностью содержатся внутри объявления типа документа в составе документа. Такой тип DTD называется внутренним подмножеством DTD. Вы также можете поместить все или часть DTD документа в отдельный файл, а затем ссылаться на этот файл из объявления типа документа. DTD, или часть DTD, содержащаяся в отдельном файле, называется внешним подмножеством DTD. Примечание. Применение внешнего подмножества DTD имеет смысл главным образом для DTD, которые являются общими для целой группы документов. Каждый документ может ссылаться на один файл DTD (или копию этого файла) как на внешнее подмножество DTD. При этом вам не надо копировать содержимое ВТПв каждый использующий его документ, а также облегчается внесение изменений в DTD. (Вам требуется модифицировать только файл DTD, и все копии этого файла, вместо того, чтобы редактировать все документы, которые его используют.) Как вам известно из главы 1, многие стандартные XML-приложения основаны на общем DTD, включаемом во все XML-документы, отвечающие этому приложению. (См. разделы «Стандартные XML-приложения» и «Реальное использование XML» в главе 1.)
Использование только внешнего подмножества DTD Чтобы использовать только внешнее подмножество DTD, опустите блок объявлений разметки, ограниченных квадратными скобками ([]), и вместо этого включите ключевое слово SYSTEM, после которого в кавычках должно следовать описание местонахождения отдельного файла, содержащего DTD. Рассмотрим, например, документ SIMPLE, используемый ранее в этой главе и имеющий внутреннее подмножество DTD:
Если в этом документе используется внешнее подмножество DTD, он будет иметь следующий вид:
Файл Simple.dtd должен иметь следующее содержимое:
Файл, содержащий внешнее подмножество DTD, может включать любые объявления разметки, которые могут быть включены во внутреннее подмножество DTD (см. раздел «Создание DTD» ранее в этой главе). Описание местонахождения файла (в данном примере Simple.dtd) называется системным литералом. Он может быть заключен в одинарные (') или двойные (") кавычки и содержать любые символы, за исключением символов кавычек, используемых как ограничители. Системный литерал задает унифицированный идентификатор ресурса (URI - uniform resource identifier) файла, содержащего внешнее подмножество DTD. В настоящее время URI практически аналогичен стандартному Internet-адресу, известному как унифицированный указатель ресурса (URL — Uniform Resource Locator). Вы можете использовать полностью прописанный URI, подобно следующему:
Или вы можете использовать частичный URI, который задает местонахождение относительно местонахождения XML-документа, содержащего URI, например:
Примечание. URI представляет собой чрезвычайно гибкую систему нотации для адресации ресурсов. Одним из типов URI является URL (Uniform Resource Locator), обычно используемый в Internet (например, http://mspress.microsoft.com/). В дальнейшем URI будет включать другие типы нотаций для адресации ресурсов. Однако пока они находятся в стадии разработки. Относительные URI в XML-документах работают подобно относительным URL в HTML-страницах. Во втором примере, если бы полный URI XML-документа был http://bogus.com/documents/Simple.xml, «Simple.dtd» ссылался бы на http://bogus.com/documents/Simple.dtd. Аналогично, если бы XML-документ был расположен в file:///C:XML Step by StepExample, CodeSimple.xml, «Simple.dtd» ссылался бы на file:///C:XML Step by StepExample CodeSimple.dtd.
Использование внешних и внутренних подмножеств DTD одновременно Чтобы использовать и внешнее, и внутреннее подмножество DTD, следу-i 'т использовать ключевое слово SYSTEM вместе с системным литералом, падающим местонахождение файла с внешним подмножеством DTD, после чего внутри квадратных скобок ([]) следует объявление разметки внутреннего подмножества DTD. Вот пример простого XML-документа, имеющего как внутреннее, так и ипешнее подмножество DTD:
Вот содержимое файла Book.dtd, в котором хранится внешнее подмножеcтво DTD:
Мели вы используете внешнее и внутреннее подмножество DTD, X ML-процессор объединяет их содержимое следующим образом:
Примечание. Хотя XML-процессор просто игнорирует повторные объявления атрибутов и примитивов, повторное объявление элемента (даже если он объявлен тем же самым образом) является допустимым. Способ объединения внутреннего и внешнего подмножеств DTD XML-процессором дает вам возможность использовать общий DTD (например такой, который используется для XML-приложений) в качестве внешнего подмножества DTD, а затем адаптировать (или субклассироватъ, как говорят программисты) DTD для конкретного документа путем включения внутреннего подмножества. Ваше внутреннее подмножество может добавлять элементы, атрибуты или примитивы — он также может изменять определения атрибутов или примитивов.
Условия игнорирование разделов внешнего подмножества DTD Вы можете заставить XML-процессор игнорировать часть внешнего под-мпожггтва DTD с помощью раздела IGNORE. Вы можете, например, использовать раздел IGNORE при разработке документа с целью временного отключения альтернативного или необязательного блока объявлений разметки. При этом вам не нужно удалять строки, а затем повторно их вставлять. (Если вы программист, то вам известно, что такой прием подобен «комментированию» фрагмента кода, который вы хотите временно игнорировать.) Раздел IGNORE начинается с символов <![IGNORE[ и .чаканчивается символами ]]>. На следующем рисунке представлен пример полного описания внешнего подмножества DTD, включающего раздел IGNORE.
Если вы хотите временно восстановить блок объявлений разметки в разделе IGNORE, вам достаточно просто заменить ключевое слово IGNORE на INCLUDE, не удаляя при этом символы-ограничители (<![, [ и ]]>), как и следующем примере:
Впоследствии вы можете снова быстро отключить раздел, вернув заголовок IGNORE. Раздел INCLUDE, вложенный в раздел IGNORE, также игнорируется. Примечание. Вы можете использовать разделы IGNORE и INCLUDE только во внешнем подмножестве DTD либо во внешнем параметрическом примитиве. (Внешний параметрический примитив ссылается на отдельный файл, который — подобно внешнему подмножеству DTD - содержит объявления разметки, подробнее об этом вы узнаете в главе 6.)
Преобразование корректно сформированного документа в валидный В этом разделе вы попытаетесь на практике применить полученные при изучении этой главы знания, преобразовав корректно сформированный документ в валидный. Вы модифицируете документ Inventory.xml, созданный вами в главе 2, чтобы сделать его валидным, а также добавите новый элемент и два атрибута, чтобы освоить описанные в этой главе приемы.
Сделайте документ валидным
Совет. При выполнении модификации в ходе данного упражнения вы можете ориентироваться на полностью модифицированный документ, который приведен в Листинге 5-1 в конце этой главы. Обратите внимание, что имя следующего за DOCTYPE ключевого слова совпадает с именем элемента Документ, IN VKNTORY, DTD состоит только из внутреннего подмножества, которое определяет элементы и атрибуты документа следующим образом:
Рубрика: Учебник по XML
Вышел MySQL 5.1.30, первый стабильный рели....
После публикации 29 тестовых версий анонсирован первый стабильный релиз MySQL 5.1, пригодный для промышленной эксплуатации и обеспечивающий увеличение производительности для "тяжелых" SQL запросов, по сравнению с MySQL 5.0, примерно на 15-20%. Главные новшества появившиеся в MySQL 5.1:
Подробнее... |
Рубрика: MySQL
| Добавлено: 28.11.2008
Тестирование параллельных программ.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Подробнее... |
Рубрика: Тестирование
| Добавлено: 28.11.2008
Архитектура AMD64 (EM64T).
Аннотация. В статье кратко рассматривается архитектура AMD64 компании AMD и ее реализация EM64T компании Intel. Описаны особенности архитектуры, ее возможности, достоинства и недостатки.
Подробнее... |
Рубрика: Архитектура AMD
| Добавлено: 27.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|