parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

XDoc.transform корёжит шаблон преобразования

G_Z 03.11.2016 04:43 / 03.11.2016 05:16

@main[]
$template[^xdoc::create{<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/root">
		<xsl:value-of select="."/>
	</xsl:template>
</xsl:stylesheet>}]

^transform[1]
^transform[2]

@transform[param]
$doc[^xdoc::create{<?xml version="1.0" encoding="utf-8"?>
<root>$param</root>}]

^template.save[/template-${param}.txt]

$result[^doc.transform[$template]]
$result[^result.string[
	$.method[text]
	$.indent[no]
]]
Первое выполнение происходит нормально, второе падает с ошибкой «runtime error: element value-of Unexpected XSLT element 'value-of'».
Если посмотреть на сохранённый текст шаблонов, то окажется, что после первого выполнения в шаблоне пропадают отступы и переводы строк.

Было:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:template match="/root">
		<xsl:value-of select="."/>
	</xsl:template>
</xsl:stylesheet>
Стало:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/root"><xsl:value-of select="."/></xsl:template></xsl:stylesheet>
Странно, что форматирование xml-документа влияет на его парсинг, но ещё более странно, что шаблон меняется в процессе применения к документу.

Win 7x64, Parser 3.4.5b.