Xml Can';无法使用XSL变量和XPATH正确显示XSL
我正在制作一个包含三个页面的基本联系人列表Web应用程序—一个显示数据库中所有联系人的联系人列表页面(存储在XML文件中)、一个联系人查看页面(显示联系人信息的只读页面)和一个新联系人页面(允许您创建新联系人或编辑以前现有联系人的信息) 我的问题是联系人查看页面。每个联系人都有一个ID,该ID通过URL传递(即contactViewer?ID=mk)。使用这个ID,我希望使用一个简单的xsl for each检查URL请求(保存在一个xsl变量中),从数据库中选择要显示的联系人。不幸的是,在添加了“for each”之后,页面上什么也没有显示,我无法找出哪里出了问题 这是ContactView的XSL页面Xml Can';无法使用XSL变量和XPATH正确显示XSL,xml,xslt,Xml,Xslt,我正在制作一个包含三个页面的基本联系人列表Web应用程序—一个显示数据库中所有联系人的联系人列表页面(存储在XML文件中)、一个联系人查看页面(显示联系人信息的只读页面)和一个新联系人页面(允许您创建新联系人或编辑以前现有联系人的信息) 我的问题是联系人查看页面。每个联系人都有一个ID,该ID通过URL传递(即contactViewer?ID=mk)。使用这个ID,我希望使用一个简单的xsl for each检查URL请求(保存在一个xsl变量中),从数据库中选择要显示的联系人。不幸的是,在添加
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="url"/>
<xsl:variable name="currentID" select="substring-after($url, 'id=')"/>
<xsl:template match="/">
<html>
<head>
<title>Contact Database - Contact Viewer</title>
<style>
h1 {color:white; background-color:black; border-style:solid;
border-color: #981b1e; padding-left:10px; font-weight:bold;}
</style>
</head>
<body>
<h1>Contact Viewer</h1>
<xsl:value-of select="$currentID"/>
<xsl:for-each select="contactdatabase/contact/id[$currentID]">
<table cellspacing="5" border="3">
<tr height="60">
<td width="70px">
<xsl:value-of select="contactdatabase/contact/firstName"/>
</td>
<td width="100px">
<xsl:value-of select= "contactdatabase/contact/lastName"/>
</td>
<td width="120px">
<xsl:value-of select="contactdatabase/contact/firstName"/>
</td>
<td width="90px">
<xsl:value-of select="contactdatabase/contact/firstName"/>
</td>
<td width="35px">
<xsl:value-of select="contactdatabase/contact/state"/>
</td>
<td width="44px">
<xsl:value-of select="contactdatabase/contact/zipcode"/>
</td>
<td width="60px">
<xsl:value-of select="contactdatabase/contact/country"/>
</td>
<td width="80">
<xsl:value-of select="contactdatabase/contact/email"/> <br></br>
<xsl:value-of select="contactdatabase/contact/home"/> <br></br>
<xsl:value-of select="contactdatabase/contact/mail"/>
</td>
<td width="80">
<xsl:value-of select="contactdatabase/contact/phonenum"/>
</td>
<td width="180">
<xsl:value-of select="contactdatabase/contact/emailaddress"/>
</td>
<td width="120px">
<a href="contactViewer?contactid={id}">view</a> / edit / delete
</td>
</tr>
</table>
</xsl:for-each>
<a href="contactList">Contact List</a>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
联系人数据库-联系人查看器
h1{颜色:白色;背景色:黑色;边框样式:纯色;
边框颜色:#981b1e;左侧填充:10px;字体重量:粗体;}
联系人查看器
/编辑/删除
XML数据库设置为
<contactdatabase>
<contact>
<firstName />
<lastName />
<address />
<city />
<state />
<zipcode />
<country />
<email />
<phone />
<mail />
<phonenum />
<emailaddress />
<comment />
<id />
</contact>
</contactdatabase>
选择所需的
contact
元素的正确XPath表达式是contactdatabase/contact[id=$currentID]
我将使用apply templates
将contact
元素的格式设置为具有给定ID的contact
元素,并编写一个单独的模板来匹配contact
元素,而不是为每个设置。看起来是这样的
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="url"/>
<xsl:variable name="currentID" select="substring-after($url, 'id=')"/>
<xsl:template match="/">
<html>
<head>
<title>Contact Database - Contact Viewer</title>
<style>
h1 {
color:white;
background-color:black;
border-style:solid;
border-color:#981b1e;
padding-left:10px;
font-weight:bold;
}
</style>
</head>
<body>
<h1>Contact Viewer</h1>
<xsl:value-of select="$currentID"/>
<xsl:apply-templates select="contactdatabase/contact[id = $currentID]"/>
<a href="contactList">Contact List</a>
</body>
</html>
</xsl:template>
<xsl:template match="contact">
<table cellspacing="5" border="3">
<tr height="60">
<td width="70px">
<xsl:value-of select="firstName"/>
</td>
<td width="100px">
<xsl:value-of select= "lastName"/>
</td>
<td width="120px">
<xsl:value-of select="firstName"/>
</td>
<td width="90px">
<xsl:value-of select="firstName"/>
</td>
<td width="35px">
<xsl:value-of select="state"/>
</td>
<td width="44px">
<xsl:value-of select="zipcode"/>
</td>
<td width="60px">
<xsl:value-of select="country"/>
</td>
<td width="80">
<xsl:value-of select="email"/> <br></br>
<xsl:value-of select="home"/> <br></br>
<xsl:value-of select="mail"/>
</td>
<td width="80">
<xsl:value-of select="phonenum"/>
</td>
<td width="180">
<xsl:value-of select="emailaddress"/>
</td>
<td width="120px">
<a href="contactViewer?contactid={id}">view</a> / edit / delete
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
联系人数据库-联系人查看器
h1{
颜色:白色;
背景色:黑色;
边框样式:实心;
边框颜色:#981b1e;
左侧填充:10px;
字体大小:粗体;
}
联系人查看器
/编辑/删除