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

Есть 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
xsl трансформации
    #39167428
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего не получается. И не понимаю, где ошибка.

Усложняю 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
xsl трансформации
    #39167972
Фотография _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.
<?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
xsl трансформации
    #39168014
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_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
xsl трансформации
    #39168015
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
картинка с резултьтатами
[img=xsl s oshibkami 2]
...
Рейтинг: 0 / 0
xsl трансформации
    #39168793
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
xsl трансформации
    #39168871
natjer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

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


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