Tôi đang cố gắng tạo trang html bằng cách sử dụng xslt (sử dụng VS 2010 làm trình chỉnh sửa và 'trình biên dịch/biến áp'). Hầu hết các công trình này hoạt động tốt và tạo ra xhtml hợp lệ, nhưng khi cố gắng tạo danh sách được sắp xếp với sự trợ giúp của <xsl:sort />
thì thứ tự không bị ảnh hưởng chút nào. Tôi đã thấy nó hoạt động, nhưng khi cố gắng xác định vấn đề của tôi và tạo mã mẫu bên dưới, không có ai trong số <xsl:sort />
của tôi hoạt động.xsl: sắp xếp, tại sao nó không hoạt động?
Xin vui lòng, ai có thể cho tôi thấy lỗi của tôi.
Dưới đây là các tệp mẫu của tôi.
sample.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="sample.xsl" ?>
<people>
<person name="Jack" age="12">
<adress>First road</adress>
</person>
<person name="Bob" age="8">
<adress>Third road</adress>
</person>
<person name="Peter" age="20">
<adress>Second road</adress>
</person>
<person name="Juli" age="65">
<adress>Last road</adress>
</person>
<person name="Abbot" age="21">
<adress>No road</adress>
</person>
</people>
sample.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output
method="xml"
omit-xml-declaration="yes" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>By @name</h2>
<div>
<xsl:for-each select="people/person">
<xsl:sort select="@name" data-type="text" order="ascending" />
<xsl:value-of select="@name" />
<xsl:element name="br" />
<xsl:text />
</xsl:for-each>
</div>
<hr />
<h2>By @age</h2>
<div>
<xsl:for-each select="people/person">
<xsl:sort select="@age" data-type="number" order="ascending" />
<xsl:value-of select="@age" />
<xsl:element name="br" />
<xsl:text />
</xsl:for-each>
</div>
<hr />
<h2>By adress</h2>
<div>
<xsl:for-each select="people/person">
<xsl:sort select="adress" data-type="text" order="ascending" />
<xsl:value-of select="adress" />
<xsl:element name="br" />
<xsl:text />
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Thực ra nó hoạt động khá tốt. Tôi không chắc vấn đề của bạn là gì. – FailedDev
Tôi thấy cùng một vấn đề mà anh ta có trong vs2010, nhưng mã hoạt động tốt trong vs2008. Giống như một số loại vấn đề xử lý xml. – Bert