我正在尝试从另一个XHTML文档创建一个新的XHTML文档。我只想在旧的XHTML文档中使用一些DIV标签,但我不确定我是否做得对。首先,如果我想选择ID = mbContent的特殊DIV标签,我可以使用
<xsl:template match="x:div[@id='mbContent']">
此DIV标记包含其他DIV和内容,如图像等。如果我想使用与内容相同的CSS样式,该怎么办?有没有办法复制CSS样式或我是否必须添加新的CSS样式,我该怎么做?由于新的XHTML文档将成为另一个XHTML的一部分,我无法使用HEAD标记并以这种方式引用CSS样式表。
嗯,但是如果我使用将在主XHTML documnet的HEAD中的CSS样式表,也许我可以将CSS样式应用于此DIV,或者?如何在新的XHTML文档中应用样式?
我有点困惑,但我希望我的问题不是混淆?! :)
嗨!我需要一些新的帮助,因为下面的代码对我不起作用。这是不起作用的
xmlns:x="http://www.w3.org/1999/xhtml" and "x:div[@id='mbContent']"
我认为这是因为我使用的CMS工具有一个代理模块,由于一些奇怪的原因不能接受这个代码。因此,我正在寻找一些替代解决方案来添加CLASS或ID,并使用此代替xsl:apply-templates select="//*[@id='mbSubMenu']"
向DIV元素添加值,并使用副本,如下例所示?预备一些新的帮助!谢谢! :)
答案 0 :(得分:1)
在XSLT文档中使用'x'作为xmlns之前,表达式中使用的Xpath很好。
模板将匹配<div>
,前提是其ID为mbContent
,所选的上下文将包含所有后代。
您可以更改元素的内联CSS。既然你说这个部分将在其他一些XHTML文档中。您可以选择XML作为输出。 如果您愿意,可以更改内联CSS。 您还可以为它们分配不同的类,以便自动获取全局样式。
我们的想法是,给定一个XML文档,您正在将其转换为另一个XML文档。 因此,您可以根据需要应用样式。
我希望能回答你的问题。
P.S。在XPath表达式中使用适当的xmlns。
我们假设以下是HTML文档。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title></title>
</head>
<body>
<div id="mbContent">
<div>
<span>Some complex structure</span>
</div>
</div>
</body>
应用以下XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:x="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="x">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="x:div[@id='mbContent']">
<xsl:copy>
<xsl:attribute name="class">
<xsl:text>someNewStyle</xsl:text>
</xsl:attribute>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
这将产生以下输出。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title/>
</head>
<body>
<div class="someNewStyle" id="mbContent">
<div>
<span>Some complex structure</span>
</div>
</div>
</body>
您可以根据需要更改XSL。
此致
奸污。