Это немного сбивает с толку слово, поэтому предположим, что у меня есть следующее в файле xsd (извините за плохой формат или ошибки, я написал это на лету):
<?xml version = "1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="Family">
<xsd:sequence>
<xsd:element name="Person" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="Pets" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Dogs" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Cats" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Reptiles" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Snakes" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Lizards" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
<xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
и предположим, что у меня естьXML-файл, который является примером этого:
...
<Family>
<Person>Father</Person>
<Person>Mother</Person>
<Person>Son</Person>
<Pets>
<Reptiles>
<Snakes>2</Snakes>
<Reptiles>
</Pets>
</Family>
<Family>
<Person>Father</Person>
<Person>Mother</Person>
<Person>Son</Person>
<Person>Daughter</Person>
<Pets>
<Dogs>1</Dogs>
</Pets>
</Family>
<Family>
<Person>Father</Person>
<Person>Mother</Person>
<Person>Daughter</Person>
<Pets>
<Cats>3</Cats>
</Pets>
</Family>
<Family>
<Person>Father</Person>
<Person>Mother</Person>
<Person>Son</Person>
<Person>Daughter</Person>
<Pets>
<Dogs>2</Dogs>
<Cats>3</Cats>
<Reptiles>
<Lizards>3</Lizards>
</Reptiles>
</Pets>
</Family>
...
И я должен был создать xsl-файл, используя таблицу стилей xsl, используя <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
, которая будет отображать эту информацию в таблице, когда она преобразуется в html. Так как информация каждой семьи различна, как бы я приступил к созданию таблицы, которая содержит всю информацию? Таблица будет выглядеть примерно так: Более конкретно, как бы я использовал xsl:for-each
и такие элементы xsl, чтобы создать эту таблицу, особенно если есть дополнительные элементы, и вы не знаете,как семья была сделана до этого?
РЕДАКТИРОВАТЬ: пришлось переделать таблицу из "Рептилии" в "Змеи" "Ящерицы"
РЕДАКТИРОВАТЬ: Вот пример файла xsl, который я пытаюсьработа над
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html><body>
<h1>Family Information</h1>
<table border="1">
<tr bgcolor="yellow">
<td><b>People</b></td>
<td><b>Dogs</b></td>
<td><b>Cats</b></td>
<td><b>Snakes</b></td>
<td><b>Lizards</b></td>
</tr>
<xsl:for-each select="Family">
<tr style="font-size: 11pt; font-family: verdana">
//How do I get the attribute values here?
</tr>
</xsl:for-each>
</table>
<body><html>
</xsl:template>
</xsl:stylesheet>
...