powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / выбрать конкретные теги и атрубуты
5 сообщений из 5, страница 1 из 1
выбрать конкретные теги и атрубуты
    #36836343
dmitryy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет, не могу создать XSL которому можно будет указать что копировать.

есть хмл типа
<root attr1=123 attr2=456>
<node1 attr1=123 attr2=456 />
<node2 attr1=123 attr2=456 />
<node3 attr1=123 attr2=456>абракадабра</node3>
</root>

на выходе нужно получить

<root attr2=456>
<node1 attr1=123 />
<node2 attr2=456 />
<node3>абракадабра</node3>
</root>

никак не могу создать XSL которому можно будет задавать какие теги и соотв. атрибуты которые я хотел бы копировать.

Спасибо!!!
...
Рейтинг: 0 / 0
выбрать конкретные теги и атрубуты
    #36836998
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmitryy,

Задавать каким образом? Т.к ответ напрашивается оч примитивный:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<xsl:template match="root">
   <root attr2="{@attr2}">
      <xsl:apply-templates />
   </root>
</xsl:template>
<xsl:template match="node1">
   <node1 attr1="{@attr1}">
      <xsl:apply-templates />
   </node1>
</xsl:template>
<xsl:template match="node2">
   <node2 attr2="{@attr2}">
      <xsl:apply-templates />
   </node2>
</xsl:template>
<xsl:template match="node3">
   <node3>
      <xsl:apply-templates />
   </node3>
</xsl:template>
<xsl:template match="text()">
   <xsl:copy-of select="." />
</xsl:template>
...
Рейтинг: 0 / 0
выбрать конкретные теги и атрубуты
    #36837924
dmitryy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если я не хочу копировать определенные ноды?

суть такая - я должен научиться копировать только то что хочу.
т.е.

<root attr1=123 attr2=456>
<node1 attr1=123 attr2=456 />
<node2 attr1=123 attr2=456 />
<node3 attr1=123 attr2=456>абракадабра</node3>
</root>

я хотел бы получить например еще такое

<root attr2=456>
<node3 attr1=123 attr2=456>абракадабра</node3>
</root>

идея где то такая, у меня есть список нодов и соотв. к ним атрубутов, и я могу их все прописать в XSL и скопировать.

в идеале что-то такое

<xsl:template match="/">
<xsl:if test="node1">
то скопировать его с такими то атрибутами
</xsl:if>

</xsl:template>


спасибо!
...
Рейтинг: 0 / 0
выбрать конкретные теги и атрубуты
    #36838847
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmitryy,

Ты хочешь решить задачу мэпинга. Обычно такие задачки решают при переводе одного XML словаря в другой. Как правило для этого используют не XSL. У меня был случай, когда мы решили использовать XSL как прослойку, но это скорее исключение.

Так вот о чем я? В твоей задачке явно не хватает исходного условия, т.к. у компьютера нет ИИ, ты должен на вход дать не только XML, но и некоторый "драфт" результата. Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<node name="root">
   <attribute name="attr2" />
   <node name="node3">
      <attribute name="attr1" />
      <attribute name="attr2" />
      </text>
   </node>
</node>
т.е. описать каким-то образом то, что ты хочешь получить на выходе.

тогда можно написать такую трансформацию, которая в зависимости от того, какой "драфт" ты ей подсунешь, выдаст тот или иной результат.
...
Рейтинг: 0 / 0
выбрать конкретные теги и атрубуты
    #36838850
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
<text/>
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / выбрать конкретные теги и атрубуты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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