2012-04-21 123 views
-2

我想弄清楚如何通过点击表中的元素,在xml文件上使用xslt转换来更改html页面。 我环顾四周,找不到答案,这里是一个简单的代码,我想知道如何更改页面并显示一些内容: 我认为您不需要阅读代码,除了最后一个是XSLT。我已经添加了代码的其他部分,以防他们需要更改。xslt转换链接

XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" 
xmlns="http://www.w3schools.com"> 

<xs:element name="Table"> 
<xs:complexType> 
<xs:sequence maxOccurs="unbounded"> 
<xs:element ref="Person"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
<xs:element name="Person"> 
<xs:complexType> 
<xs:all maxOccurs="1"> 
<xs:element ref="Name"/> 
<xs:element minOccurs="1" ref="Age"/> 
</xs:all> 
</xs:complexType> 
</xs:element> 
<xs:element name="Name"> 
<xs:complexType> 
<xs:sequence> 
<xs:element maxOccurs="1" ref="theName"/> 
<xs:element maxOccurs="1" ref="Description"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
<xs:element name="theName" type="xs:string"/> 
<xs:element name="Description" type="xs:string"/> 
<xs:element abstract="false" name="Age" type="xs:positiveInteger"/> 
</xs:schema> 

所以我创建了两个元素,theName和年龄。名称由String TheName和String Description组成。年龄只是一个积极的整合。现在,我创建了只选择两个不同的人的XML文件:

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="try.xsl"?> 
<Table xmlns="http://www.w3schools.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.w3schools.com try.xsd"> 
<Person> 
<Name> 
<theName>Thomas</theName> 
<Description>He is a nice guy</Description> 
</Name> 
<Age>10</Age> 
</Person> 

<Person> 
<Name> 
<theName>Peter</theName> 
<Description>He is good at swimming</Description> 
</Name> 
<Age>12</Age> 
</Person> 

</Table> 

我的转型,现在是做一个表的人的名字在那里年龄的功能:

XSLT:

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet 

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ws="http://www.w3schools.com" 
version="1.0"> 

<xsl:template match="/"> 
<html> 

<table border="2"> 
<tr bgcolor="red"> 
<th>Name</th> 
<th>Age</th> 
</tr> 
<xsl:for-each select="ws:Table/ws:Person"> 
<tr> 

<td><xsl:value-of select="ws:Name/ws:theName"/></td> 
<td><xsl:value-of select="ws:Age"/></td> 

</tr> 
</xsl:for-each> 
</table> 

这是我需要帮助的地方,如果我点击该人的姓名,该如何显示该人的描述。所以基本上,如果我点击托马斯,我想展示“他是一个好人”,如果我点击彼得,我想展示“他是一个很好的游泳者”。

</html> 
</xsl:template> 
</xsl:stylesheet> 

谢谢

+0

您是否尝试过搜索javascript/CSS解决方案以了解如何在鼠标点击时显示/隐藏信息? – erikxiv 2012-04-21 15:00:28

+0

不,用xslt不行吗? – John 2012-04-21 15:15:41

+0

(我从来没有使用JavaScript) – John 2012-04-21 15:16:16

回答

0

的XSLT脚本将生成一个文本文件,在这种情况下,HTML(网页)页面,这反过来会被其他应用程序(Web浏览器)来解释。有关如何创建具有流畅交互的动态网页的信息,请查看CSSJavaScript上的教程。