vanesxl
@vanesxl

Кто работал с информационными группами в hostcms?

Здравствуйте! У меня есть ИС "новости" в ней есть информационные группы, которые имеют вот такую структуру:
1 инф группа 1
1.1 инф группа 2
2 инф группа 3
2.1 инф группа 4
2.2 инф группа 5
2.2.1 инф группа 6
3 инф группа 7
Как мне составить xsl шаблон так, чтобы получить вот такую структуру:
<ul>
    <li>инф группа 1</li>
    <li>
       <ul>
           <li>инф группа 2</li>
        </ul>
    </li>
    <li>инф группа 3</li>
    <li>
       <ul>
           <li>инф группа 4</li>
            <li>инф группа 5</li>
            <li>
               <ul>
                   <li>инф группа 6</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>инф группа 7</li>
</ul>

Помогите пожалуйста, уже неделю ломаю голову над этим.
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Roman-Fov
XML:
<informationsystem>
<informationsystem_group>
	<name>name1</name>
	<informationsystem_group>
		<name>name2</name>
		<informationsystem_group>
			<name>name3</name>
		</informationsystem_group>
	</informationsystem_group>
</informationsystem_group>
<informationsystem_group>
	<name>name4</name>
	<informationsystem_group>
		<name>name5</name>
	</informationsystem_group>
	<informationsystem_group>
		<name>name6</name>
	</informationsystem_group>
	<informationsystem_group>
		<name>name7</name>
	</informationsystem_group>
	<informationsystem_group>
		<name>name8</name>
	</informationsystem_group>
</informationsystem_group>
<informationsystem_group>
	<name>name9</name>
	<informationsystem_group>
		<name>name10</name>
	</informationsystem_group>
	<informationsystem_group>
		<name>name11</name>
	</informationsystem_group>
</informationsystem_group>
</informationsystem>


XSLt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output indent="yes" encoding="utf-8" version="1.0"/>

	<xsl:template match="/informationsystem">
		<xsl:if test="count(informationsystem_group) &gt; 0">
			<ul>
				<xsl:apply-templates select="informationsystem_group"/>
			</ul>
		</xsl:if>
	</xsl:template>

	<xsl:template match="informationsystem_group">
		<li>
			<xsl:value-of select="name"/>
		</li>
		<xsl:if test="count(informationsystem_group) &gt; 0">
			<li>
				<ul>
					<xsl:apply-templates select="informationsystem_group"/>
				</ul>
			</li>
		</xsl:if>
	</xsl:template>
</xsl:stylesheet>


Result:
<ul>
   <li>name1</li>
   <li>
      <ul>
         <li>name2</li>
         <li>
            <ul>
               <li>name3</li>
            </ul>
         </li>
      </ul>
   </li>
   <li>name4</li>
   <li>
      <ul>
         <li>name5</li>
         <li>name6</li>
         <li>name7</li>
         <li>name8</li>
      </ul>
   </li>
   <li>name9</li>
   <li>
      <ul>
         <li>name10</li>
         <li>name11</li>
      </ul>
   </li>
</ul>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы