Форум программистов, компьютерный форум, киберфорум
XML/XSL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
6 / 6 / 2
Регистрация: 11.03.2011
Сообщений: 40
1

Преобразование docbook в главу уже существующей книги docbook

30.06.2015, 19:17. Показов 593. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Мне необходимо преобразовать XML документ с помощью XSL. задачка вроде простая но ради единичного случая, изучать синтаксис как-то не хочется. Подскажите пожалуйста, кто имел с этим дело как преобразовать XML файл следующего содержания( docbook ):

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "docbookV4.5/docbookx.dtd">
<book>
  <info>
    <title>PROJECT_NAME</title>
  </info>
  <chapter>
    <title>Namespace Documentation</title>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="first.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="second.xml"/>
  </chapter>
</book>
В главу уже существующей книги такого формата :

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "docbookV4.5/docbookx.dtd">
<section>
  <info>
    <title>PROJECT_NAME</title>
  </info>
  <title>Namespace Documentation</title>
  <para>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="first.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="second.xml"/>
  </para>
</section>
То есть [/XML]<book></book>[/XML] заменить на [/XML]<section></section>[/XML], [/XML]<chapter></chapter>[/XML] заменить на [/XML]<para></para>[/XML], и вынести [/XML]<title>......</title>[/XML] перед < para >.

За ранее огромное спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2015, 19:17
Ответы с готовыми решениями:

Переход на новую главу книги.
Объясните как перелистывать страницы. Есть книга,каждая глава этой книги лежит в отдельном...

Сетевое использование уже существующей БД
Такая ситуация, есть обычные таблицы сделанные в датабэйсдесктопе, есть программа, с помощью...

Доступ к уже существующей сети
Здравствуйте, возможно вопрос такой вопрос не стоит выкладывать на форум, но что-то гугл мне не...

Создать папку в уже существующей папке
Надо создать папку в уже существующей папке! Хочу создать папку в &quot;C:\\Program Files&quot;...

2
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,986
Записей в блоге: 43
30.06.2015, 23:40 2
Если это все, то вот так вот
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
 
  <xsl:template match="book">
    <section>
      <xsl:apply-templates/>   
    </section>
  </xsl:template>
  <xsl:template match="chapter">
    <xsl:copy-of select="title"/>
    <para>
      <xsl:apply-templates select="node()[name() != 'title']"/>
    </para>
  </xsl:template>
</xsl:stylesheet>
Насчет доктайпа там есть нюанс: можно сделать, чтобы он выводился
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" doctype-public="-//OASIS//DTD DocBook XML V4.5//EN" doctype-system="docbookV4.5/docbookx.dtd"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
 
  <xsl:template match="book">
    <section>
      <xsl:apply-templates/>   
    </section>
  </xsl:template>
  <xsl:template match="chapter">
    <xsl:copy-of select="title"/>
    <para>
      <xsl:apply-templates select="node()[name() != 'title']"/>
    </para>
  </xsl:template>
</xsl:stylesheet>
Но в нем указывается корневой элемент, а здесь он другой, так что не знаю как один дтд может разные корневые элементы выводить. Просто обрати на это внимание.
1
6 / 6 / 2
Регистрация: 11.03.2011
Сообщений: 40
30.06.2015, 23:51  [ТС] 3
Спасибо тебе большое, за ответ. Правда тестить уже сегодня не буду, иду спать )) .
0
30.06.2015, 23:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2015, 23:51
Помогаю со студенческими работами здесь

Обновление в базе уже существующей записи
Здравствуйте, мне необходимо в базе данных обновить уже существующую запись, код набрала,но...

Создать новую таблицу в уже существующей БД MySQL
подскажите пожалуйста, кто знает..... хочу создать таблицу в уже существующей базе данных здесь...

Как создать ячейку в уже существующей таблице
Извеняюсь за такой глупый вопрос, но как создать ячейку в уже существующей таблице? Т.е есь таблица...

Получить таблицу из уже существующей таблицы с условием
Добрый день, у меня есть таблица вида 1 5 0 2 0 6 1 8 0 4 1 4 0 3


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru