我想设置一个处理指令以在 XML 之上包含一个样式表:
同样的问题是 xml 声明(例如<?xml version="1.0" encoding="utf-8"?>
)
期望的结果:
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<TestPath>
<Test>Test</Test>
<SomeMore>SomeMore</SomeMore>
</TestPath>
我的研究使我接触到节点测试语法和processing-instruction()
.
这个
SELECT 'type="text/xsl" href="stylesheet.xsl"' AS [processing-instruction(xml-stylesheet)]
,'Test' AS Test
,'SomeMore' AS SomeMore
FOR XML PATH('TestPath')
产生这个:
<TestPath>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<Test>Test</Test>
<SomeMore>SomeMore</SomeMore>
</TestPath>
我发现的所有提示都告诉我将 XML 转换为 VARCHAR,“手动”连接它并将其转换回 XML。但这 - 怎么说 - 丑陋?
这显然有效:
SELECT CAST(
'<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<TestPath>
<Test>Test</Test>
<SomeMore>SomeMore</SomeMore>
</TestPath>' AS XML);
有机会解决这个问题吗?