powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Прелюразовать исходный XML
3 сообщений из 3, страница 1 из 1
Прелюразовать исходный XML
    #38015665
SANTA1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Помогите преобразовать дерево Xml файла.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8"?>
<list>
<productgroup name="Пассивное сетевое оборудование/Оптические коннекторы и адаптеры">
    <product code="368858" model="AFR-00203"/>
    <product code="697563" model="AFR-00202"/>
    <product code="368939" model="KFR-00009"/>
  </productgroup>
  <productgroup name="Пассивное сетевое оборудование/Оптические кроссовые шнуры">
    <product code="1947081" model="91.1L.872.00100"/>
    <product code="368896" model="FPC-0A020-40"/>
    <product code="1534533" model="91.L0.832.00200"/>
    <product code="1600348" model="91.30.832.00200"/>
    <product code="1947080" model="91.10.832.00200"/>
  </productgroup>
  <productgroup name="Пассивное сетевое оборудование/Оптические распределительные панели, коробки">
    <product code="368857" model="AFR-00190"/>
    <product code="368855" model="AFR-00174"/>
    <product code="368755" model="91.A0860" />
    <product code="368915" model="CSP-00030"/>
    <product code="369088" model="RFR-00108"/>
  </productgroup>
</list>



надо сделать так:
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
<list>
<productgroup name="Пассивное сетевое оборудование" num="1">
	<group name= "Оптические коннекторы и адаптеры" num="1.1">
    <product code="368858" model="AFR-00203"/>
    <product code="697563" model="AFR-00202"/>
    <product code="368939" model="KFR-00009"/>
	</group>
	<group name= "Оптические кроссовые шнуры" num="1.2">
    <product code="1947081" model="91.1L.872.00100"/>
    <product code="368896" model="FPC-0A020-40"/>
    <product code="1534533" model="91.L0.832.00200"/>
    <product code="1600348" model="91.30.832.00200"/>
    <product code="1947080" model="91.10.832.00200"/>
	</group>
  <group name= "Оптические распределительные панели, коробки" num="1.3">
    <product code="368857" model="AFR-00190"/>
    <product code="368855" model="AFR-00174"/>
    <product code="368755" model="91.A0860" />
    <product code="368915" model="CSP-00030"/>
    <product code="369088" model="RFR-00108"/>
	</group>
  </productgroup>
  </list>


Тоесть добавить тег <group>, и в него перенести часть текста из <productgroup> плюс как-то все это пронумеровать.
Понятное дело, что <productgroup> много, и они все разные.
Очень прошу, помогите - сам не сделаю никак.. Пробовал делать все-это в екселе, но там постоянно что-то меняют, и мои макросы ни на что не годятся.
...
Рейтинг: 0 / 0
Прелюразовать исходный XML
    #38015667
SANTA1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, за ошибку в заголовке - как ее исправить?
...
Рейтинг: 0 / 0
Прелюразовать исходный XML
    #38015753
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<xsl:template match="productgroup">
  <xsl:variable name="group" select="substring-before(@name, '/')"/>
  <xsl:if test="not(preceding-sibling::productgroup[substring-before(@name, '/') = $group])">
    <xsl:variable name="num" select="position()"/>  <!-- Если хотите, чтобы номера были последовательными, то нужно подумать -->
    <productgroup name="{$group}" num="{$num}">
      <xsl:apply-templates select="productgroup[substring-before(@name, '/') = $group]" mode="group">
        <xsl:with-param name="num" select="$num"/>
      </xsl:apply-templates>
    </productgroup>
  </xsl:if>
</xsl:template>

<xsl:template match="productgroup" mode="group">
  <xsl:param name="num"/>
  <group name="{substring-after(@name, '/')}" num="{concat($num, '.', position())}">
    <xsl:copy-of select="*"/>
  </group>
</xsl:template>
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Прелюразовать исходный XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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