Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl трансформации / 7 сообщений из 7, страница 1 из 1
09.02.2016, 21:12
    #39167127
natjer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
Всем доброго вечера!

Есть xlm. В нем список объектов и свойств для каждого из них:
Код: 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"?>
<!-- ?xml-stylesheet type='text/xsl' href='x.xsl'? -->

<DATA>

<OBJECTS>
  <OBJECT id="1">Name1</OBJECT>
  <OBJECT id="2">Name2</OBJECT>
  <OBJECT id="3">Name3</OBJECT>
</OBJECTS>

<PROPERTIES>
<PROPERTY_TYPE nr="1">
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.1.1</PROPERTY1> <PROPERTY2>Value1.1.2</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.1.11</PROPERTY1> <PROPERTY2>Value1.1.21</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="2"/> <PROPERTY1>Value1.2.1</PROPERTY1> <PROPERTY2>Value1.2.2</PROPERTY2> </PROPERTY>
</PROPERTY_TYPE>
<PROPERTY_TYPE nr="2">
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value2.1.1</PROPERTY1> <PROPERTY2>Value2.1.2</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="2"/> <PROPERTY1>Value2.2.1</PROPERTY1> <PROPERTY2>Value2.2.2</PROPERTY2> </PROPERTY>
</PROPERTY_TYPE>
</PROPERTIES>

</DATA>



Пишу для него xsl для просмотра в html.
Хочу отобразить простую табличку со списком обьектов.
id name1 Name12 Name23 Name3
Попытка неудачная и не понимаю, что не так. Подскажите, ткните пальцем, где ошибка

Код: 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.
<?xml version="1.0" encoding="utf-8"?>
 <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >

<xsl:output method="html" /> 

<!-- List of objects -->
<xsl:template match="/DATA/OBJECTS"> 
<p><b>Objects</b></p>
<table cellspacing="0" cellpadding="3" width="100%">
<thead>
<tr>
<td><strong>Id</strong></td>
<td><strong>Name</strong></td>
</tr>
</thead>
<tbody>
<xsl:for-each select="OBJECT">
<!-- xsl:sort data-type="number" select="OBJECT/@id"/ -->
<tr>
<td><xsl:value-of select="/OBJECT/@id"/></td>
<td><xsl:value-of select="OBJECT"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
<xsl:apply-templates/> 
</xsl:template>



</xsl:transform> 




У меня показывает только заглавие "Objects"

Еще хочу собрать значения свойств воедино. Т.е. как-то так:
<H1>Объект id=1, namе=Name1</H1>
<H2>Свойство 1</H2>
тогда табличка со всеми значениями свойства 1 (т.е. у которых <PROPERTY_TYPE nr="1">) для объекта 1.
<H2>Свойство 2</H2>
тогда табличка со всеми значениями свойства 2 для объекта 1.
и так для всех объектов.
Может направите в верное русло как это сделать?
...
Рейтинг: 0 / 0
10.02.2016, 11:56
    #39167428
natjer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
Ничего не получается. И не понимаю, где ошибка.

Усложняю 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.
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='x.xsl'?>

<DATA>

<OBJECTS>i zdesj chto-to zapisano
  <OBJECT id="1">Name1<X>xxx</X></OBJECT>
  <OBJECT id="3">Name3</OBJECT>
  <OBJECT id="2">Name2</OBJECT>
</OBJECTS>

<PROPERTIES>
<PROPERTY_TYPE nr="1">
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.1</PROPERTY1> <PROPERTY2>Value1.2</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.11</PROPERTY1> <PROPERTY2>Value1.21</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="2"/> <PROPERTY1>Value2.1</PROPERTY1> <PROPERTY2>Value2.2</PROPERTY2> </PROPERTY>
</PROPERTY_TYPE>
<PROPERTY_TYPE nr="2">
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.1</PROPERTY1> <PROPERTY2>Value1.2</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="1"/> <PROPERTY1>Value1.11</PROPERTY1> <PROPERTY2>Value1.21</PROPERTY2> </PROPERTY>
  <PROPERTY><PROPERTY_OBJECT id="2"/> <PROPERTY1>Value2.1</PROPERTY1> <PROPERTY2>Value2.2</PROPERTY2> </PROPERTY>
</PROPERTY_TYPE>
</PROPERTIES>

</DATA>



уточняю xsl:
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
 <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >

<xsl:output method="html" /> 

<!-- List of objects -->
<xsl:template match="/DATA/OBJECTS"> 
<p><b>List of objects</b>
<table cellspacing="0" cellpadding="3" width="100%">
<thead>
<tr>
<td><strong>Id</strong></td>
<td><strong>Name</strong></td>
</tr>
</thead>
<tbody>
<xsl:for-each select="OBJECT">
<xsl:sort data-type="number" select="@id"/>
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="OBJECT"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
<xsl:apply-templates/> 
</p>
</xsl:template>


</xsl:transform> 



Таблички нет, а дополнительная информация в xml лезет в отображение.
[img=xsl s oshibkami]
...
Рейтинг: 0 / 0
10.02.2016, 18:42
    #39167972
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
 <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >

<xsl:output method="html" /> 

<xsl:template match="/">
   <xsl:apply-templates select="/DATA/OBJECTS"> 
</xsl:template> 

<xsl:template match="/DATA/OBJECTS"> 
<p><b>List of objects</b>
<table cellspacing="0" cellpadding="3" width="100%">
<thead>
<tr>
<td><strong>Id</strong></td>
<td><strong>Name</strong></td>
</tr>
</thead>
<tbody>
<xsl:for-each select="OBJECT">
<xsl:sort data-type="number" select="@id"/>
<tr>
<td><xsl:value-of select="@id"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</p>
</xsl:template>


</xsl:transform> 
...
Рейтинг: 0 / 0
10.02.2016, 20:07
    #39168014
natjer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
_Vasilisk_,

Спасибо.

Первая часть почти получилась.
А теперь туплю во 2:
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
 <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >

<xsl:output method="html" /> 

<xsl:template match="/">
   <xsl:apply-templates select="/DATA/OBJECTS/OBJECT"/> 
</xsl:template> 


<!-- OBJECT PROPERTIES -->
<xsl:template match="/DATA/OBJECTS/OBJECT"> 
<H2><a name="{generate-id()}"><xsl:value-of select="@id"/> - <xsl:value-of select="."/></a> </H2>
<xsl:variable name="v_obj_id" select="@id"/>

<p><i>OBJECT PRORERTY WITH type=1 </i><br/>
<table cellspacing="0" cellpadding="3">
<thead>
<tr>
<td><strong>Property1</strong></td>
<td><strong>Property2</strong></td>
</tr>
</thead>

<tbody>
<xsl:for-each select="/DATA/PROPERTIES/PROPERTY_TYPE[@nr='1'][PROPERTY/PROPERTY_OBJECT[@id=$v_obj_id]]">
<tr>
<td><xsl:value-of select="PROPERTY/PROPERTY1"/></td>
<td><xsl:value-of select="PROPERTY/PROPERTY2"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>

 </p>


<xsl:apply-templates/>
 <hr/>
</xsl:template>




</xsl:transform> 



Получилось вот что :
[img=xsl s oshibkami 2.png]
...
Рейтинг: 0 / 0
10.02.2016, 20:09
    #39168015
natjer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
картинка с резултьтатами
[img=xsl s oshibkami 2]
...
Рейтинг: 0 / 0
11.02.2016, 16:55
    #39168793
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
Код: xml
1.
2.
3.
<H2>
  <a name="{generate-id()}"><xsl:value-of select="@id"/> - <xsl:value-of select="text()"/></a>
</H2>


Код: xml
1.
2.
3.
4.
5.
6.
<xsl:for-each select="/DATA/PROPERTIES/PROPERTY_TYPE[@nr='1']/PROPERTY[PROPERTY_OBJECT/@id=$v_obj_id]">
  <tr>
    <td><xsl:value-of select="PROPERTY1"/></td>
    <td><xsl:value-of select="PROPERTY2"/></td>
  </tr>
</xsl:for-each>


natjer
Код: xml
1.
<xsl:apply-templates/>

Убрать!
...
Рейтинг: 0 / 0
11.02.2016, 18:00
    #39168871
natjer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl трансформации
_Vasilisk_,

ОГРОМНОЕ-ОГРОМНОЕ СПАСИБО!
Все получилось
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl трансформации / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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