Я бы хотел включить <ul>
-элемент в <li>
-элемент, но я не знаю, как это сделать.Я попытался описать проблему простым и понятным способом.Я подозреваю, что это только небольшое место, которое должно быть адаптировано.Я использую XSLT 1.0.
Вот этот XML:
<University>
<Student>
<Info>Example 1.0</Info>
<Details>
<Entry>
<Info>Example 1.1</Info>
</Entry>
<Entry>
<Info>Example 1.2</Info>
</Entry>
</Details>
</Student>
<Student>
<Info>Example 2.0</Info>
</Student>
<Student>
<Info>Example 3.0</Info>
</Student>
</University>
То, что я хочу, должно выглядеть так:
<div>
<p data-role="heading">UNIVERSITY</p>
<ul>
<li>Example 1.0
<ul>
<li>Example 1.1</li>
<li>Example 1.2</li>
</ul>
</li>
<li>Example 2.0</li>
<li>Example 3.0</li>
</ul>
</div>
Что я получаю в данный моментэто следующий код:
<div>
<p data-role="heading">UNIVERSITY</p>
<ul>
<li>Example 1.0</li>
<ul>
<li>Example 1.1</li>
<li>Example 1.2</li>
</ul>
<li>Example 2.0</li>
<li>Example 3.0</li>
</ul>
</div>
Мой XSLT выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:nxps="urn:nxps"
exclude-result-prefixes="nxps">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- UNIVERSITY -->
<xsl:template match="University">
<div>
<!-- HEADING -->
<p data-role="heading">
<xsl:text>UNIVERSITY</xsl:text>
</p>
<ul>
<xsl:apply-templates/>
</ul>
</div>
</xsl:template>
<!-- STUDENT -->
<xsl:template match="Student">
<xsl:apply-templates/>
</xsl:template>
<!-- INFO IN STUDENT & ENTRY -->
<xsl:template match="Entry/Info | Student/Info">
<xsl:choose>
<!-- FIRST INFO -->
<xsl:when test="name(preceding-sibling::*[1])!='Info'">
<li>
<xsl:apply-templates/>
</li>
</xsl:when>
<!-- FOLLOWING INFO -->
<xsl:otherwise>
<li class="Parablock">
<xsl:apply-templates/>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- DETAILS -->
<xsl:template match="Details">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<!-- ENTRY -->
<xsl:template match="Entry">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Вот также ссылка на .NET XSLT Fiddle: https://xsltfiddle.liberty -development.net / eiZQaG5 / 1
Спасибо за помощь!