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

Подскажите как из такой структуры

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<document>
	<common>
		<firstname>Mark</firstname>
		<surname>Markov</surname>
	</common>
	<details>
		<address>
			<street> 12  Avenue</street>
			<postalcode> 123323 </postalcode>
		</address>
		<hobby>none</hobby
	</details>
<document>

скопировать только нод details и его все подноды изменив название нодов на
Код: plaintext
1.
2.
3.
4.
5.
6.
	<space:details>
		<space:address>
			<space:street> 12  Avenue</space:street>
			<space:postalcode> 123323 </space:postalcode>
		</space:address>
		<space:hobby>none</space:hobby>
	</space:details>

Чет много пробовал, но получалось отлько один уровень скопировать, а не все подуровни.

Спасибо.
...
Рейтинг: 0 / 0
Копирование всех надов с изменением названия
    #35337238
dronvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уровень вложенности заранее неизвестен.
...
Рейтинг: 0 / 0
Копирование всех надов с изменением названия
    #35337967
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще говоря вы излагаете не правильно. space это всего лишь кратеое имя пространства имен, поэтому, то что вы гноворите, на самом деле выглядит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:space="urn:myspace">

  <xsl:template match="/document"> 
    <xsl:apply-templates select="details" mode="addSpace"/>
  </xsl:template> 

  <xsl:template match="*"  mode="addSpace">
    <xsl:element name="{local-name()}" namespace="urn:myspace">
      <xsl:value-of select="text()"/>
      <xsl:apply-templates select="*" mode="addSpace"/>
    </xsl:element>
  </xsl:template> 
</xsl:stylesheet>
и результат
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0"?>
<details xmlns="urn:myspace">
	<address>
		<street> 12  Avenue</street>
		<postalcode> 123323 </postalcode>
	</address>
	<hobby>none</hobby>
</details>
что в терминах xml озбозначает - узел details и все его дочерние узлы принадляжат к пространству имен urn:myspace, что Вам собственно и требовалось.

Но если вы продолжаете настаивать на префиксе space (непонятно зачем, то это делается так)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:space="urn:myspace">

  <xsl:template match="/document"> 
    <xsl:apply-templates select="details" mode="addSpace"/>
  </xsl:template> 

  <xsl:template match="*"  mode="addSpace">
    <xsl:element name="{concat('space:', local-name())}">
      <xsl:value-of select="text()"/>
      <xsl:apply-templates select="*" mode="addSpace"/>
    </xsl:element>
  </xsl:template> 
</xsl:stylesheet>
и вывод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0"?>
<space:details xmlns:space="urn:myspace">
	<space:address>
		<space:street> 12  Avenue</space:street>
		<space:postalcode> 123323 </space:postalcode>
	</space:address>
	<space:hobby>none</space:hobby>
</space:details>

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Копирование всех надов с изменением названия
    #35338112
dronvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Не ожидал услашать такой грамотный и точный!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Копирование всех надов с изменением названия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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