powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
12 сообщений из 12, страница 1 из 1
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890632
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток, уважаемые.
Не могу решить задачу создание открытых или закрытых элементов по условию.
Само условие не суть как важно. Это отдельный разговор.
Вопрос технике использования конструкций типа
<xsl:element>
( тут что-то )
</xsl:element>
и
<xsl:element (список атрибутов) />
в трансформациях

Через технику XSLT не получается:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:element name="адрес">
   <xsl:attribute name="дом">
       <xsl:value-of select="10"/>
   </xsl:attribute>
   <xsl:attribute name="квартира"/>
       <xsl:value-of select="15"/>
   </xsl:attribute>
</xsl:element>


т.к. из этого кода получу
Код: xml
1.
2.
<адрес дом="10" квартира="15">
</адрес>


Закрывающий тег в таком случае не нужен.
Мне надо получить такой фрагмент документа:
Код: xml
1.
<адрес дом="10" квартира="15"/>


Т.е. надо получить закрытй элемент с атрибутами.

Подскажите пожалуйста как решить эту задачу?
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890643
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПГС
т.к. из этого кода получу
Код: xml
1.
2.
<адрес дом="10" квартира="15">
</адрес>

А я получаю на MSXML 6
Код: xml
1.
<адрес дом="10" квартира="15" />


Ну и кроме того элементы
Код: xml
1.
2.
<адрес дом="10" квартира="15" />
<адрес дом="10" квартира="15"></адрес>

полностью идентичны. А вот откуда у вас появляется перевод строки - нужно смотреть
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890661
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_

Ну и кроме того элементы
Код: xml
1.
2.
<адрес дом="10" квартира="15" />
<адрес дом="10" квартира="15"></адрес>

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

Спасибо за отклик.
Перевод строки не суть, это я руками вбивал код...
Дело в том, что я выложил часть задачи, чтобы не грузить ненужными деталями.
Полный код трансформации преобразует переменный набор пустых и непустых объектов(параметров) которые я должен преобразовать в Элементы и Атрибуты XML документа.

Попросту задача может быть сформулирована так:
Как получить закрытый элемент с набором атрибутов
То, что и открытый пустой и закрытый пустой по сути идентичны я в курсе.

Но заказчик просит не создавать открытый пустой элемент.
Поэтому я ищу способ.
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890669
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПГС
Как получить закрытый элемент с набором атрибутов
У меня получается закрытый. Далее либо вопрос к секретному коду, либо к парсеру. Судя по тому, что у вас в элементе появляется перевод строки, проблема таки в коде
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890683
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дотнетовский XSL-процессор так же выдаёт самозакрытый тэг. Так что озвучьте хотя бы платформу, на которой вы делаете преобразования
ПГС
То, что и открытый пустой и закрытый пустой по сути идентичны я в курсе.

Поскольку они идентичны, то в данном случае формирование разметки выходного дерева - исключительно внутренняя кухня процессора, и даже если она поддаётся настройке, то исключительно какими-нибудь неявными способами, меняющими своё поведение в зависимости от фазы Луны.
_Vasilisk_
Далее либо вопрос к секретному коду, либо к парсеру. Судя по тому, что у вас в элементе появляется перевод строки, проблема таки в коде

У меня, помнится, MSXML какой-то версии на identity transform в подобной ситуации как раз выдавал вместо самозакрытых пару открывающего и закрывающего тэгов. Правда, я с этим не боролся, а оставил, как есть.
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890696
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
.....Судя по тому, что у вас в элементе появляется перевод строки, проблема таки в коде

Не берите в голову перевод строки.
Ниже почти полный код

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<xsl:transform
  xmlns:asx="http://www.sap.com/abapxml"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:prg="http://www.sap.com/abapxml/types/program/{Какая-то программа}"
  version="1.0">
  <xsl:strip-space elements="*"/>

  <xsl:output method="xml" indent="no" omit-xml-declaration="no" version="1.0"/>

  <xsl:template match="/">
    <xsl:for-each select="/asx:abap/asx:values/TABLE/item">

      <xsl:apply-templates select="/asx:abap/asx:heap">
        <xsl:with-param name="pName" select="./NAME"/>
        <xsl:with-param name="pValue" select="./VALUE"/>
        <xsl:with-param name="T_Attrb" select="./T_LIST"/>
        <xsl:with-param name="ChilListID" select="substring(./RF_CHILD/@href,2)"/>
      </xsl:apply-templates>

    </xsl:for-each>

  </xsl:template>

  <xsl:template match="/asx:abap/asx:heap">
    <xsl:param name="pName"/>
    <xsl:param name="pValue"/>
    <xsl:param name="T_Attrb"/>
    <xsl:param name="ChilListID"/>

    <xsl:element name="{$pName}">
      <xsl:variable name="attList" select="$T_Attrb/item[./*]"/>

      <xsl:for-each select="$attList">

        <xsl:variable name="aPos" select="."> </xsl:variable>

        <xsl:attribute name="{$aPos/NAME}">
          <xsl:value-of select="$aPos/VALUE"/>
        </xsl:attribute>

      </xsl:for-each>
      <xsl:value-of select="$pValue"/>

      <xsl:for-each select="prg:TT_ELEMENTS[@id=$ChilListID]/item">

        <xsl:apply-templates select="/asx:abap/asx:heap">
          <xsl:with-param name="pName" select="./NAME"/>
          <xsl:with-param name="pValue" select="./VALUE"/>
          <xsl:with-param name="T_Attrb" select="./T_LIST"/>
          <xsl:with-param name="ChilListID" select="substring(./RF_CHILD/@href,2)"/>
        </xsl:apply-templates>

      </xsl:for-each>


    </xsl:element>

  </xsl:template>

</xsl:transform>




Это ABAP-XSLT не знаю сможете ли вы его протестировать, т.к. входящий поток объектов "сидит" здесь: {asx:values/TABLE/item}.
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890704
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПГС,

XML какой-нибудь приложите
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890710
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
ПГС,

XML какой-нибудь приложите


На входе не XML
Там параметр в виде дерева объектов в листьях которого лежат ABAP ссылки .... типа указателей на области памяти в C++.
Структура этого дерева произвольна. В зависимости от топологии наполнения листьев в этом дереве, XSLT и должен создать XML документ любого типа.
Прислать ссылки на области в памяти я не могу ;)
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890715
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут похожая тема. Но не полностью.
Там имена элементов захаркожены, а у меня имена элементов "приезжают" из входного параметра ABAP-XSLT программы.
Я эти имена создаю через <xsl:element>, поэтому этот пример мне не подходит....
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890726
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПГС
Там параметр в виде дерева объектов в листьях которого лежат ABAP ссылки .
Я понятия не имею что это такое
ПГС
Прислать ссылки на области в памяти я не могу ;)
Нет. Так нет. Вот для такого XML
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="1.xsl" ?>
<asx:abap xmlns:asx="http://www.sap.com/abapxml">
  <asx:values>
    <TABLE>
      <item>
        <NAME>T_Name</NAME>
        <VALUE>T_Value</VALUE>
        <T_LIST>
          <item>
            <NAME>T_Name_A1</NAME>
            <VALUE>T_Value_A1</VALUE>
          </item>
          <item>
            <NAME>T_Name_A2</NAME>
            <VALUE>T_Value_A2</VALUE>
          </item>
        </T_LIST>
        <RF_CHILD href="a1"/>
      </item>
    </TABLE>
  </asx:values>
  <asx:heap>
    <prg:TT_ELEMENTS id="1" xmlns:prg="http://www.sap.com/abapxml/types/program">
      <item>
        <NAME>H_Name</NAME>
        <VALUE>H_Value</VALUE>
        <T_LIST>
          <item>
            <NAME>H_Name_A1</NAME>
            <VALUE>H_Value_A1</VALUE>
          </item>
          <item>
            <NAME>H_Name_A2</NAME>
            <VALUE>H_Value_A2</VALUE>
          </item>
        </T_LIST>
        <RF_CHILD href="a_13"/>
      </item>
    </prg:TT_ELEMENTS>
  </asx:heap>
</asx:abap>

получается вот такой выхлоп
Код: xml
1.
<?xml version="1.0" encoding="UTF-16"?><T_Name T_Name_A1="T_Value_A1" T_Name_A2="T_Value_A2">T_Value<H_Name H_Name_A1="H_Value_A1" H_Name_A2="H_Value_A2">H_Value</H_Name></T_Name>

пустых тегов не наблюдаю.
...
Рейтинг: 0 / 0
XSLT как создать закртый тег для пустого текстового узла и наличии атрибутов в элементе?
    #39890730
ПГС
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
пустых тегов не наблюдаю.

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


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