Я преобразовываю XML в HTML с помощью XSLT.XSLT для множественной структуры ребенка
Вот мой код работает
<?xml version="1.0" encoding="UTF-8"?>
<product>
<auto>
<admin>
<date>2015</date>
<age>28</age>
<level>3</level>
<subject>
<id>1</id>
</subject>
</admin>
<report>
<Fname>John</Fname>
<Lname>AA</Lname>
<subject>
<id>1</id>
</subject>
</report>
</auto>
<auto>
<admin>
<date>02/02/2015</date>
<age>29</age>
<level>2</level>
<subject>
<id>1</id>
</subject>
</admin>
<report>
<Fname>Jack</Fname>
<Lname>BB</Lname>
</report>
</auto>
</product>
Вот мой Running XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html lang="en">
<head>
<title>Example</title>
<script type="text/javascript">
<![CDATA[
function toggleDisplay(element)
{
element.style.display = element.style.display === 'none' ? '' : 'none';
};
function toggleDisplayAll(elements)
{
for(var i=0; i<elements.length; i++){
toggleDisplay(elements[i]);
}
}
]]>
</script>
</head>
<body>
<h1>Example</h1>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="product/auto">
<ul>
<a onclick="toggleDisplayAll(this.parentNode.getElementsByTagName('ul')); return false;" href="#">
<xsl:value-of select="report/Fname"/>
</a>
<xsl:apply-templates select="admin"/>
<!--<xsl:apply-templates select="report"/>-->
</ul>
</xsl:template>
<xsl:template match="date">
<li style="display:none;">
<xsl:value-of select="concat('Date : ',.)"/>
</li>
</xsl:template>
<xsl:template match="age">
<li style="display:none;">
<xsl:value-of select="concat('Age : ',.)"/>
</li>
</xsl:template>
<xsl:template match="level">
<li style="display:none;">
<xsl:value-of select="concat('Level : ',.)"/>
</li>
</xsl:template>
<xsl:template match="id">
<li style="display:none;">
<xsl:value-of select="concat('ID : ',.)"/>
</li>
</xsl:template>
<xsl:template match="subject">
<li style="display:none;">
<a onclick="toggleDisplayAll(this.parentNode.getElementsByTagName('li')); return false;" href="#">
<xsl:text>Subject: </xsl:text>
</a>
<ul>
<xsl:apply-templates select='*'/>
</ul>
</li>
</xsl:template>
<xsl:template match="admin">
<ul style="display:none;">
<a onclick="toggleDisplayAll(this.parentNode.getElementsByTagName('li')); return false;" href="#">
<xsl:text>Admin: </xsl:text>
</a>
<ul style="display:none;">
<xsl:apply-templates select='*'/>
</ul>
</ul>
</xsl:template>
</xsl:stylesheet>
Это возвращает меня как
John Jack
после щелчка на Джона
John . Admin: Jack
По щелчку Админа
John . Admin: . Date: 2015 . Age: 28 . Level: 3 . Subject: Jack
но Субъект ссылку, я хочу, чтобы отобразить идентификатор в качестве дочернего элемента по щелчку его как ниже
John . Admin: . Date: 2015 . Age: 28 . Level: 3 . Subject: .Id: 1 Jack
Спасибо, что ответили на вопрос Эрика, я попробовал добавить, как вы предлагали, но он дает мне те же данные. Пожалуйста, взгляните на сделанные изменения и предложите мне, где я сделал неправильно. – user1893874
Это мое первое задание в XSLT, так что вам нужна ваша помощь здесь. – user1893874
Проблемы в HTML-вывод, я думаю. Что вы хотите использовать для вывода html? –