После поиска в сети ответов, поиска "почти" решений ... Я решил свести проблему к очень простому случаю.
Рассмотрим следующий фрагмент XML:
<me:root xmlns:me="http://stackoverflow.com/xml"
xmlns="http://www.w3.org/1999/xhtml">
<me:element>
<p>Some HTML code here.</p>
</me:element>
</me:root>
Обратите внимание, что элемент p
относится к пространству имен XHTML, которое является стандартным для этого документа.
Теперь рассмотрим следующую простую таблицу стилей.Я хочу создать документ XHTML с содержанием me:element
в качестве тела.
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:me="http://stackoverflow.com/xml"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="me">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Title</title>
</head>
<body>
<xsl:copy-of select="me:root/me:element/node()"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Обратите внимание, что я включил exclude-result-prefixes
... Но посмотрите, что я получу:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My Title</title>
</head>
<body>
<p xmlns:me="http://stackoverflow.com/xml">Some HTML code here.</p>
</body>
</html>
И что сводит меня с ума, вот почему, о, почему xmlns:me
появляется внутри p
элемента?
Независимо от того, что я пытался, я не мог заставить вещи работать.У меня странное ощущение, что проблема в моем xsl:copy-of
утверждении.