2010-08-26 4 views
2

Мне нравится иметь один документ xml документа docbook, который имеет контент для нескольких целевых аудиторий. Есть ли фильтр, который позволяет мне отфильтровывать материал, необходимый только для «продвинутых» пользователей?Публикация Docbook для разных целевых аудиторий

Атрибут уровня изобретается мной, чтобы выразить то, что я имею в виду.

<?xml version="1.0"?> 
<book> 
    <title lang="en">Documentation</title> 

    <chapter id="introduction" level="advanced"> 
     <title>Introduction for advanced users</title> 
    </chapter> 

    <chapter id="introduction" level="basic"> 
     <title>Introduction for basic users</title> 
    </chapter> 

    <chapter id="ch1"> 
     <para level="basic">Just press the button</para> 
     <para level="advanced"> 
      Go to preferences to set your 
      needs and then start the process 
      by pressing the button. 
     </para> 
    </chapter> 
</book> 

ответ

2

DocBook не имеет атрибута level. Возможно, вы имели в виду userlevel?

Если вы используете таблицы стилей DocBook XSL для преобразования документов, у них есть встроенная поддержка профилирования (условный текст). Для этого вам нужно

  1. использовать профилирование с поддержкой версии таблицы стилей (например, использовать html/profile-docbook.xsl вместо обычного html/docbook.xsl) и

  2. указать атрибут значения, которые вы хотите профиль на через parameter (например, profile.userlevel - basic).

Chapter 26 из DocBook XSL Боба Stayton в: The Complete Guide имеет все детали.

+0

Большое спасибо. Я не мог изобразить, что в docbook нет такого типа. – schoetbi

0

Два способа, с верхней части моей головы:

  1. Написать быстрый скрипт, который принимает level в качестве параметра и, используя XPath или регулярные выражения, которые только выплевывает XML вы хотите ,
  2. Напишите XSLT transformation, который выплюнет необходимый XML.

(2) является более чистым, но (1), вероятно, быстрее писать.

+0

Я ожидал, что у docbook есть что-то готовое для этого, но, как вы сказали, базовые xslt работают. см. мой другой пост с источником. Благодарю. – schoetbi