Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с xsl преобразованием / 6 сообщений из 6, страница 1 из 1
23.02.2009, 18:44
    #35832823
Gemorroj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с xsl преобразованием
здравствуйте. с 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
23.02.2009, 21:48
    #35833038
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с xsl преобразованием
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
24.02.2009, 13:28
    #35834054
Gemorroj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с xsl преобразованием
спасибо за подсказку.
мне нужно получить вот эти элементы
Код: 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
24.02.2009, 14:19
    #35834225
Gemorroj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с 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: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
24.02.2009, 22:05
    #35835297
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с xsl преобразованием
Gemorroj
Код: plaintext
<xsl:template match="//rbac">

Та же ошибка. Где у Вас в исходном XML элемент rbac?
...
Рейтинг: 0 / 0
24.02.2009, 22:11
    #35835309
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с xsl преобразованием
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
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите с xsl преобразованием / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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