Это естественно и почти тривиально даже в XSLT 1.0 .
Наиболее естественно хранить элемент <style>
и всех его потомков в другом отдельном файле XML. Путь к этому отдельному файлу может быть передан как параметр для преобразования - таким образом, он полностью настраивается:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:param name="pStylefilePath" select="'somedefaultUrl'"/>
<xsl:variable name="vStyle"
select="document($pStylefilePath)"/>
<xsl:template match="/">
<html>
<head>
<title>This is my tes application</title>
<xsl:copy-of select="$vStyle/*"/>
</head>
<body>
<xsl:for-each select="JobRequistions/JobRequisition">
<hr />
<div class="Wrapper">
<div class="TitleStyle">
<font class="WhiteHeader">
<xsl:value-of disable-output-escaping="yes" select="title" />
</font>
<font class="ProviderStyle">
@ <xsl:value-of disable-output-escaping="yes" select="job_board_provider"/>
</font>
</div>
Number of openings: <xsl:value-of disable-output-escaping="yes" select="number_of_openings"/>
<hr />
</div>
<hr />
</xsl:for-each >
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Вы можете даже пойти дальше и поместить весь скелетный текст XHTML (XHTML со специальными элементами, которые будут сопоставлены и обработаны преобразованием и будут заменены результатами этой обработки) в отдельном file - так называемая техника «заполнить пробелы».
В этом случае у вас также будет другой параметр filepath - путь к скелету XHTML.
Вот простой, полный пример (используя фиктивный исходный XML-документ, который вы не показали настоящий):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes"/>
<xsl:param name="pStylefilePath"
select="'file:///c:/temp/delete/style.xml'"/>
<xsl:variable name="vStyle"
select="document($pStylefilePath)"/>
<xsl:template match="/">
<html>
<head>
<title>This is my tes application</title>
<xsl:copy-of select="$vStyle/*"/>
</head>
<body>
<xsl:for-each select="JobRequistions/JobRequisition">
<hr />
<div class="Wrapper">
<div class="TitleStyle">
<font class="WhiteHeader">
<xsl:value-of disable-output-escaping="yes" select="title" />
</font>
<font class="ProviderStyle">
@ <xsl:value-of disable-output-escaping="yes" select="job_board_provider"/>
</font>
</div>
Number of openings: <xsl:value-of disable-output-escaping="yes" select="number_of_openings"/>
<hr />
</div>
<hr />
</xsl:for-each >
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Файл: c:/temp/delete/style.xml
это просто ваш <style>
элемент :
<style type="text/css">
body
{
/*Background Properties*/
background-color:#b0c4de;
/*Font Properties*/
font-family:Arial;
font-size:14px;
}
.TitleStyle
{
/*Text Properties*/
text-align:left;
/*Font Properties*/
font-size:24;
/*Layout Properties*/
margin-bottom: 5px;
}
.Wrapper
{
padding: 5px;
border-width:2px;
border-style:solid;
}
.WhiteHeader
{
color:white;
}
.ProviderStyle
{
font-size:18px;
}
</style>
Когда приведенное выше преобразование применяется к любому XML-документу (не используется), как этот:
<t/>
Получен желаемый результат :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>This is my tes application</title><style type="text/css">
body
{
/*Background Properties*/
background-color:#b0c4de;
/*Font Properties*/
font-family:Arial;
font-size:14px;
}
.TitleStyle
{
/*Text Properties*/
text-align:left;
/*Font Properties*/
font-size:24;
/*Layout Properties*/
margin-bottom: 5px;
}
.Wrapper
{
padding: 5px;
border-width:2px;
border-style:solid;
}
.WhiteHeader
{
color:white;
}
.ProviderStyle
{
font-size:18px;
}
</style></head>
<body></body>
</html>