powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT TXT 2 XML
3 сообщений из 3, страница 1 из 1
XSLT TXT 2 XML
    #39531850
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!

Пусть есть текстовый файл:
Код: xml
1.
2.
3.
Имя: Значение свойства1
UID: Значение свойства2
Тип: Значение свойства3



Хочу получить XML:
Код: xml
1.
<Свойства Имя="Значение свойства1" UID="Значение свойства2" Тип="Значение свойства3">



Делаю так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" encoding="UTF-16" indent="no" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />

<xsl:param name="txt-encoding" as="xs:string" select="'CP866'" />
<xsl:param name="txt-uri" as="xs:string" select="'file:///D:/2/003610.VR1'" />

<xsl:template match="/">
	<xsl:variable name="txt" select="unparsed-text($txt-uri, $txt-encoding)" />
	<xsl:analyze-string select="$txt" regex="\r\n">
		<xsl:non-matching-substring>
			<xsl:variable name="Имя"><xsl:analyze-string select="." regex="^Имя:(.*)"><xsl:matching-substring><xsl:value-of select="normalize-space(regex-group(1))"/></xsl:matching-substring></xsl:analyze-string></xsl:variable>
			<xsl:variable name="UID"><xsl:analyze-string select="." regex="^UID:(.*)"><xsl:matching-substring><xsl:value-of select="normalize-space(regex-group(1))"/></xsl:matching-substring></xsl:analyze-string></xsl:variable>
			<xsl:variable name="Тип"><xsl:analyze-string select="." regex="^Тип:(.*)"><xsl:matching-substring><xsl:value-of select="normalize-space(regex-group(1))"/></xsl:matching-substring></xsl:analyze-string></xsl:variable>
		</xsl:non-matching-substring>
	</xsl:analyze-string>

<Свойства Имя="{$Имя}" UID="{$UID}" Тип="$Тип">

</xsl:template>

</xsl:stylesheet>



И получаю:
Код: plaintext
1.
2.
Warning at xsl:variable on line 18 column 55 of test.xslt:
  SXWN9001: A variable with no following sibling instructions has no effect

Как можно сделать такое преобразование?
...
Рейтинг: 0 / 0
XSLT TXT 2 XML
    #39531940
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну видно никто с таким не работал.

Допустим я получил следующий XML файл:
Код: xml
1.
<Имя>Значение свойства1</Имя><UID>Значение свойства2</UID><Тип>Значение свойства3</Тип>



с помощью следующего преобразования:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" encoding="UTF-16" indent="no" omit-xml-declaration="yes" />
<xsl:strip-space elements="*" />

<xsl:param name="txt-encoding" as="xs:string" select="'CP866'" />
<xsl:param name="txt-uri" as="xs:string" select="'file:///D:/2/003610.VR1'" />

<xsl:template match="/">
	<xsl:variable name="txt" select="unparsed-text($txt-uri, $txt-encoding)" />
		<xsl:variable name="entries" as="node()*">
		<xsl:analyze-string select="$txt" regex="\r\n">
			<xsl:non-matching-substring>
				<xsl:analyze-string select="." regex="^Имя:(.*)"><xsl:matching-substring><Имя><xsl:value-of select="normalize-space(regex-group(1))"/></Имя></xsl:matching-substring></xsl:analyze-string>
				<xsl:analyze-string select="." regex="^UID:(.*)"><xsl:matching-substring><UID><xsl:value-of select="normalize-space(regex-group(1))"/></UID></xsl:matching-substring></xsl:analyze-string>
				<xsl:analyze-string select="." regex="^Тип:(.*)"><xsl:matching-substring><Тип><xsl:value-of select="normalize-space(regex-group(1))"/></Тип></xsl:matching-substring></xsl:analyze-string>
			</xsl:non-matching-substring>
		</xsl:analyze-string>
	</xsl:variable>

	<xsl:for-each select="$entries">
               ????????????
	</xsl:for-each>
</xsl:template>

</xsl:stylesheet>



Можно ли в цикле
Код: xml
1.
2.
3.
	<xsl:for-each select="$entries">
               ????????????
	</xsl:for-each>


получить нужный мне формат
Код: xml
1.
<Свойства Имя="Значение свойства1" UID="Значение свойства2" Тип="Значение свойства3">

?
...
Рейтинг: 0 / 0
XSLT TXT 2 XML
    #39532188
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все. Вопрос закрыт.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT TXT 2 XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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