早上好!
我有这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Relatorio.xsl"?>
<relatório id="LPROG" xmlns="http://www.dei.isep.ipp.pt/lprog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog Relatorio.xsd">
<páginaRosto>
<tema>oRolhas</tema>
<!--Bunch of other fields-->
</páginaRosto>
<!--Bunch of other fields-->
</relatório>
使用给定的XSD正确地形成和验证XML。
应用这个简单的.xsl:
之后<?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>
<head>
<title/>
</head>
<body>
<h1 align="center">Relatório Trabalho</h1>
<xsl:apply-templates select="relatório/páginaRosto"/>
</body>
</html>
</xsl:template>
<xsl:template match="páginaRosto">
<h1>Page</h1>
<h2>Tema:
<xsl:value-of select="tema"/>
</h2>
</xsl:template>
</xsl:stylesheet>
输出结果为:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body><h1 align="center">Relatório Trabalho</h1></body>
</html>
它不是“打印”“páginaRosto”模板,我无法弄清楚原因。 我的XPath表达式甚至XML文件有问题吗?
提前致谢
答案 0 :(得分:0)
xml定义了默认命名空间xmlns="http://www.dei.isep.ipp.pt/lprog"
要匹配默认命名空间中的元素,XPath表达式必须使用相同的命名空间(但必须定义非空前缀):
<xsl:apply-templates
xmlns:p="http://www.dei.isep.ipp.pt/lprog"
select="p:relatório/p:páginaRosto"/>
答案 1 :(得分:0)
XML:
<relatório id="LPROG" xmlns:lp="http://www.dei.isep.ipp.pt/lprog"
...
</relatório>
XSL:
<xsl:apply-templates xmlns:lp="http://www.dei.isep.ipp.pt/lprog" select="relatório/páginaRosto"/>
结果:
<html>
<head>
<title/>
</head>
<body>
<h1 align="center">Relatório Trabalho</h1>
<h1>Page</h1>
<h2>Tema:
oRolhas</h2>
</body>
</html>