Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.190.152.38] |
|
Сообщ.
#1
,
|
|
|
Файл test.xml:
<?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <!DOCTYPE base SYSTEM "test.dtd"> <base> <object> <attr> <name>&house_matherial;</name> <value>&house_matherial_1;</value> </attr> <attr> <name>&roof_matherial;</name> <value>&roof_matherial_2;</value> </attr> </object> <object> <attr> <name>&house_matherial;</name> <value>&house_matherial_3;</value> </attr> <attr> <name>&roof_matherial;</name> <value>&roof_matherial_2;</value> </attr> </object> <object> <attr> <name>&house_matherial;</name> <value>&house_matherial_3;</value> </attr> <attr> <name>&roof_matherial;</name> <value>&roof_matherial_2;</value> </attr> </object> <object> <attr> <name>&house_matherial;</name> <value>&house_matherial_2;</value> </attr> <attr> <name>&roof_matherial;</name> <value>&roof_matherial_1;</value> </attr> </object> </base> Файл test.xsl: <?xml version="1.0" encoding="windows-1251"?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/REC-html40" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <DIV class="page"> <xsl:apply-templates/> </DIV> </BODY> </HTML> </xsl:template> <xsl:key name="name_key" match="attr" use="name|value"/> <xsl:template match="object"> <xsl:for-each select="attr[count(. | key('name_key', name)[1])=1]"> <xsl:sort select="name"/> <li> <h3><xsl:value-of select="name"/></h3> <ul><!--вот здесь проблемка--> <xsl:for-each select="key('name_key', name)|attr[value]"> <xsl:sort select="value"/> <li> <xsl:value-of select="value"/> </li> </xsl:for-each> </ul> </li> </xsl:for-each> </xsl:template> </xsl:stylesheet> DTD приводить не буду, не важно. name - назначение материала. value - вид материала. &house_matherial; - материал дома &roof_matherial; - материал крыши Надо составить XSL так, чтобы на выходе получать: Назначение материала #1: <список всех используемых в БД видов материалов для данного назначения и в скобках количество объектов, испоьзующих данный материал для данного назначения> Назначение материала #2: <список всех используемых в БД видов материалов для данного назначения и в скобках количество объектов, испоьзующих данный материал для данного назначения> Например: Материал дома: кирпич(1), саман(2), шлакоблок(1) Материал крыши: шифер(1), черепица(2) Т.е. я пока имею группировку только по виду назначения материала, а хочется ещё сгруппировать и виды материалов. |
Сообщ.
#2
,
|
|
|
Я в XSL не силен, потому для данного конкретного примера не скажу. Но... виды материалов, которые сгруппированы по назначению, ты что, опять по назначению разгруппировывать хочешь? Экая загогулина получается...
|
Сообщ.
#3
,
|
|
|
Объясню.
Структура вида: o( B=>Ba, A=>Aa, C=>Ca ), o( B=>Bb, A=>Aa ) Надо получить на выходе: B(2): Bb(1), Ba(1); A(2): Aa(2); C(1): Ca(1) |