powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / не потерять DOCTYPE после преобразования?
8 сообщений из 8, страница 1 из 1
не потерять DOCTYPE после преобразования?
    #34594369
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу добиться!
Вот исходник:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dmodule [
<!ENTITY ICN-30-A-320000-0-00000-00001-A-01-1_001 SYSTEM "ICN-30-A-320000-0-00000-00001-A-01-1_001.cgm" NDATA cgm>
<!ENTITY ICN-30-A-320000-0-00000-00002-A-01-1_001 SYSTEM "ICN-30-A-320000-0-00000-00002-A-01-1_001.cgm" NDATA cgm>
<!ENTITY ICN-30-A-320000-0-00000-00003-A-01-1_001 SYSTEM "ICN-30-A-320000-0-00000-00003-A-01-1_001.cgm" NDATA cgm>
<!NOTATION jpg SYSTEM "jpg">
]>
<dmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_2-0/xml_schema/dm/descriptSchema.xsd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink">
<figure boardno="ICN-30-A-320000-0-00000-00001-A-01-1_001"/>
<figure boardno="ICN-30-A-320000-0-00000-00002-A-01-1_001"/>
<figure boardno="ICN-30-A-320000-0-00000-00003-A-01-1_001"/>
</dmodule>

При любом преобразовании DOCTYPE со всем содержимым исчезает!

Как оставить после преобразования Doctype неизменным?
Да ивообще оставить?

Перерыл все, знаю что можно добавить в output, но у меня же неизвестное количество и названия сущностей!
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34594520
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По виду это xsd'шная схема.
Какого преобразования?
Это я так понял на входе. Покаж чего на выходе.
причем тут output?
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34594645
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну к примеру:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

На выходе:

<?xml version="1.0" encoding="UTF-8"?>
<dmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_2-0/xml_schema/dm/descriptSchema.xsd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://www.purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink">
<figure boardno="ICN-30-A-320000-0-00000-00001-A-01-1_001"/>
<figure boardno="ICN-30-A-320000-0-00000-00002-A-01-1_001"/>
<figure boardno="ICN-30-A-320000-0-00000-00003-A-01-1_001"/>
</dmodule>

На выходе нет Doctype и всех Entity?
А мне их нужно оставить!!!
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34594717
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные не изменяемые, то можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    
    <xsl:template match="/">
        <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE dmodule [ 
            <!ENTITY ICN- 30 -A- 320000 - 0 - 00000 - 00001 -A- 01 -1_001 SYSTEM "ICN-30-A-320000-0-00000-00001-A-01-1_001.cgm" NDATA cgm> 
            <!ENTITY ICN- 30 -A- 320000 - 0 - 00000 - 00002 -A- 01 -1_001 SYSTEM "ICN-30-A-320000-0-00000-00002-A-01-1_001.cgm" NDATA cgm> 
            <!ENTITY ICN- 30 -A- 320000 - 0 - 00000 - 00003 -A- 01 -1_001 SYSTEM "ICN-30-A-320000-0-00000-00003-A-01-1_001.cgm" NDATA cgm> 
            <!NOTATION jpg SYSTEM "jpg"> 
            ]>]]> </xsl:text>
        <xsl:apply-templates/>
    </xsl:template>
А так это и не коментарий, не текст, не теги, не инструкции.
У меня даже такое не прокотило
Код: plaintext
<xsl:template match="processing-instruction()|comment()"/>
Так что прям не знаю :)
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34594730
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожаление они разные!
Могут быть какие угодно.

Я думаю может есть какие-то настройки парсеров, чтобы копировать DOCTYPE неизменным.
В msxml ничего не нашел.

Больше не знаю с какой стороны подойти.
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34595593
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я могу сгенерировать таким образом новый блок DOCTYPE c Entity, но неужели нет других вариантов для простого полного копирования Doctype.
Тем более, что я столкнулся с проблемой:
таким образом трансформация через DOMDocument не выполняется
ValidateonParse = false
Async= false
но на выходе если я генерю Doctype через XSLT, получаю пустой документ.

Я готов использовать и Saxon, только скажите, что он может просто копировать блок DOCTYPE (без участия генерации entity посредством XSLT)!
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34597625
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, он его чувствует (/node()[1]), но копировать не хочет :)
...
Рейтинг: 0 / 0
не потерять DOCTYPE после преобразования?
    #34634285
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.dpawson.co.uk/xsl/sect2/N2281.html#d4029e49
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / не потерять DOCTYPE после преобразования?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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