我继承了一个项目,该项目希望使用xslt来转换一些html。匹配适用于'/',但我无法让它在子节点上运行
我在mozilla上找到了一些代码片段,它将xslt转换应用于mozilla上的html,代码工作在上。问题是,我无法模板匹配节点"firmenliste“
我用的是:
var xslRef;
var xslloaded = false;
var xsltProcessor = new XSLTProcessor();
var myDOM;
var xmlRef = document.implementation.createDocument(""
我在包含xslt模板时遇到了问题。
我有a.xslt,包括b.xslt和c.xslt。
B和c都需要一个位于d.xslt中的模板。如果在b和c中添加包含语句,则在VS2008中会出现重复的模板错误:
The named template 'MyTemplate' does not exist.
当我试图点击使用这些XSLT的网页时,我会得到一个错误,它们不能正确显示。
如果我将d.xslt包含在a.xslt中,它将正确显示,但我在b和c中得到一个错误,说明我所引用的模板不存在:
'MyTemplate' is a duplicate template name
目前,我正在开发一个微服务来处理XML(和其他格式)的转换,但这些在目前并不重要。对于XML到XML转换,我使用一个描述转换的XSLT文件。此XSLT具有对其他XSLT文件的引用,并且可能会在一年后出现一个新版本。现在,微服务正在使用kubernetes服务的码头容器中运行。XSLT现在嵌入到repo中,因此嵌入到docker容器中,但是如果我想更改某些内容,我必须重新构建和重新部署服务。为了解决这个问题,我找到了多个解决方案,但每个解决方案都有各自的缺点:
保持现在的状态
- (-) Hard to extend with new XSLTs or versions
- (+)
我使用作为(SAX) XMLREader,并将命名空间特性设置为false。此解析器用于将Transformer作为SAX源提供。完整代码:
final TransformerFactory factory = TransformerFactory.newInstance();
final Transformer t = factory.newTransformer(new StreamSource(
getClass().getResourceAsStream("/identity.xsl")));
final XMLReader p