Xpath, используемый в выражении, подходит, пока вы не используете 'x' в качестве xmlns в документе XSLT.
Шаблон будет соответствовать <div>
при условии, что его идентификатор равен mbContent
, а в выбранном контексте будут все потомки.
Вы можете изменить встроенный CSS для элементов. Поскольку вы сказали, что эта часть будет в каком-то другом документе XHTML. Вы можете выбрать XML в качестве вывода.
Измените встроенный CSS, если хотите.
Вы также можете назначить им разные классы, чтобы они автоматически принимали глобальные стили.
Идея состоит в том, что, получив XML-документ, вы преобразуете его в другой XML-документ.
Поэтому вы можете применять стили, как вам нравится.
Надеюсь, это ответит на ваш вопрос.
P.S. используйте правильные xmlns в выражении XPath.
Предположим, что следующим является 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 в соответствии со своими потребностями.
С уважением,
изнасиловать.