powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с xsl преобразованием
6 сообщений из 6, страница 1 из 1
Помогите с xsl преобразованием
    #35832823
Gemorroj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здравствуйте. с XML премудростями только начинаю знакомиться, поэтому возможно буду говорить глупости, заранее извиняюсь)
имеется следующий xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<rbac:getAssignedUsersResponse xmlns:rbac="http://tempo.intalio.org/security/RBACQueryService/">
<rbac:user>intalio\organ_mo</rbac:user>
<rbac:user>intalio\organ_mo1</rbac:user>
<rbac:user>intalio\organ_mo2</rbac:user>
<rbac:user>intalio\organ_mo3</rbac:user>
</rbac:getAssignedUsersResponse>
</soapenv:Body>
</soapenv:Envelope>
во что его следует преобразовать я пока и сам не очень четко представляю, но по аналогии с кое-какими примерами соорудил следующий XSL код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:security="http://tempo.intalio.org/security/RBACQueryService/"
        xmlns:form1="http://itredux.ru/form1/xform"
        version="1.0">
    <xsl:output method="xml" indent="yes"/>
      <xsl:template match="//security">
      <form1:select_items>
            <xsl:for-each select="//security">
                <form1:item>
                    <form1:label>
                        <xsl:value-of select="security:user"/>
                    </form1:label>
                    <form1:value>
                        <xsl:value-of  select="security:user"/>
                    </form1:value>
                </form1:item>
            </xsl:for-each>
            </form1:select_items>
    </xsl:template>
</xsl:stylesheet>
укажите хотябы на явные ошибки в коде, если таковые есть.
да, еще приложу XSD к которому нужно прилепить получившийся с помощью XSL преобразования код
Код: plaintext
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.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:fe="http://itredux.ru/form1/xform"
    xmlns:xform="http://itredux.ru/form1/xform"
    targetNamespace="http://itredux.ru/form1/xform" elementFormDefault="qualified">
    <xs:element name="output">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="select" type="xs:string"/>
                <xs:element name="x" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="taskId" type="xs:string"/>
            <xs:attribute name="participantToken" type="xs:string"/>
            <xs:attribute name="user" type="xs:string"/>
            <xs:attribute name="formUrl" type="xs:string"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="input">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="select" type="xs:string"/>
                <xs:element name="select_items">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="fe:item" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="item">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label" type="xs:string"/>
                <xs:element name="value" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
...
Рейтинг: 0 / 0
Помогите с xsl преобразованием
    #35833038
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gemorroj
Код: plaintext
1.
2.
3.
4.
5.
6.
<xsl:template match="//security">
  <form1:select_items>
     <xsl:for-each select="//security">
       <form1:item/>
    </xsl:for-each>
  </form1:select_items>
</xsl:template>

И где в исходном XML у вас элемент security?

Далее, если у вас в исходном документе будет n элементов security, то на выходе Вы получите n элементов <form1:select_items> в каждый из которых будет вложено n элементов <form1:item/>
...
Рейтинг: 0 / 0
Помогите с xsl преобразованием
    #35834054
Gemorroj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за подсказку.
мне нужно получить вот эти элементы
Код: plaintext
1.
2.
3.
<rbac:user>intalio\organ_mo</rbac:user>
<rbac:user>intalio\organ_mo1</rbac:user>
<rbac:user>intalio\organ_mo2</rbac:user>
<rbac:user>intalio\organ_mo3</rbac:user>
и преобразовать чтобы они подходили под этот шаблон
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    <xs:element name="input">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="select" type="xs:string"/>
                <xs:element name="select_items">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="fe:item" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="item">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="label" type="xs:string"/>
                <xs:element name="value" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
пока не выходит.
попробовал как-то так еще
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:rbac="http://tempo.intalio.org/security/RBACQueryService/"
        xmlns:form1="http://itredux.ru/form1/xform"
        version="1.0">
    <xsl:output method="xml" indent="yes"/>
      <xsl:template match="//rbac">
      <form1:select_items>
            <xsl:for-each select=".">
                <form1:item>
                    <form1:label>
                        <xsl:value-of select="rbac:user"/>
                    </form1:label>
                    <form1:value>
                        <xsl:value-of  select="rbac:user"/>
                    </form1:value>
                </form1:item>
            </xsl:for-each>
            </form1:select_items>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Помогите с xsl преобразованием
    #35834225
Gemorroj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
		xmlns:rbac="http://tempo.intalio.org/security/RBACQueryService/"
        xmlns:xform="http://itredux.ru/form1/xform"
        version="1.0">
    <xsl:output method="xml" indent="yes"/>
      <xsl:template match="/">
      <xform:select_items>
            <xsl:for-each select="//rbac">
                <xform:item>
                    <xform:label>
                        <xsl:value-of select="."/>
                    </xform:label>
                    <xform:value>
                        <xsl:value-of  select="."/>
                    </xform:value>
                </xform:item>
            </xsl:for-each>
            </xform:select_items>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Помогите с xsl преобразованием
    #35835297
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gemorroj
Код: plaintext
<xsl:template match="//rbac">

Та же ошибка. Где у Вас в исходном XML элемент rbac?
...
Рейтинг: 0 / 0
Помогите с xsl преобразованием
    #35835309
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gemorroj
Код: plaintext
<xsl:for-each select=".">

А эта запись вообще не имеет смысла
Вот аналогичный код на Си
Код: plaintext
1.
2.
3.
for (i =  0 ; i < count("//rbac"); i++)  //  <xsl:template match="//rbac">
  for (j = i; j <= i; j++)  // <xsl:for-each select=".">
    ........
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с xsl преобразованием
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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