Javascript I';我正在尝试转换Evernote';s ENMLinto使用XSLT和NodeXSLT进行标记时会抱怨未知的标记和实体

Javascript I';我正在尝试转换Evernote';s ENMLinto使用XSLT和NodeXSLT进行标记时会抱怨未知的标记和实体,javascript,xml,node.js,xslt,evernote,Javascript,Xml,Node.js,Xslt,Evernote,有没有办法在服务器端代码中将XSLT应用于XML?到目前为止,我发现最好的是。但是它有一个主要的缺点:看起来它不适用于自定义名称空间 更准确地说:我正试图使用XSLT将Evernote的ENML()转换为降价,而node_XSLT抱怨未知的标记和实体 以下是我正在做的: test.xml: 我得到了一个错误: test.xml:5: parser error : Entity 'nbsp' not defined <h1>Sample&nbsp;header<

有没有办法在服务器端代码中将XSLT应用于XML?到目前为止,我发现最好的是。但是它有一个主要的缺点:看起来它不适用于自定义名称空间

更准确地说:我正试图使用XSLT将Evernote的ENML()转换为降价,而node_XSLT抱怨未知的标记和实体


以下是我正在做的:

test.xml:

我得到了一个错误:

test.xml:5: parser error : Entity 'nbsp' not defined
    <h1>Sample&nbsp;header</h1>
test.xml:5:解析器错误:未定义实体“nbsp”
样本头
当我尝试将其作为html读取时,我遇到以下错误:

test.xml:4: HTML parser error : Tag en-note invalid
<en-note style="background: #e6e6e6;">
test.xml:4:HTML解析器错误:标记en注释无效
我不想问如何使用这个库,我只是想了解如果可能的话,我如何在服务器端执行必要的转换。

您的XML依赖于DTD(Evernote DTD),该DTD可从以下网站下载:

该DTD加载其他三个DTD。这个:

声明您的
实体:

<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space, U+00A0 ISOnum -->
这将修复未定义的
实体“nbsp”错误

显然,
标记不会对HTML进行验证。您需要将其验证为Evernote


您的XSLT转换只是读取标记的名称并将其打印出来。

谢谢您的回答,我将尝试使用本地版本的DTD。显然,它不是完整的XML和XSLT,我正在使用XSLT将evernote的所有注释转换为标记,而nbsp不是唯一的实体。转换在浏览器中工作,所以我认为问题在于node.js库。
test.xml:5: parser error : Entity 'nbsp' not defined
    <h1>Sample&nbsp;header</h1>
test.xml:4: HTML parser error : Tag en-note invalid
<en-note style="background: #e6e6e6;">
<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space, U+00A0 ISOnum -->
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xslt"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd" [
   <!ENTITY nbsp "&#160;">
]>
<en-note style="background: #e6e6e6;">
    <h1>Sample&nbsp;header</h1>
</en-note>