2009-08-13 102 views
4

对此的回答很可能不是,尽管搜索没有任何结果。我很早以前就想到了这样的事情,但这可能都是幻想。编译为xslt?

基本上,用手写xslt是非常可怕的。困扰我的并不是功能范式。令我困扰的是它使用基于XML的语法。我想知道是否有任何可用的,可以从一些更简单更清晰的语法编译成XSLT样式表。没有花括号,但尖括号有点令人难以置信。

谢谢。

回答

3

你可以S-言词作为SXML到XML。而不是使用尖括号,这将使用括号略有更简洁的语法:

(xsl:template (@ (name "mytemplate")) 
    (xsl:if (@ (test "foo = 'bar'")) 
    (xsl:value-of (@ (select "@baz"))))) 

这是否是在XML的改进取决于你的个人品味,当然。

0

我不知道任何编译器尚未转换为XSLT。

但是我确实知道一些工具/ ide可以使XSLT更容易工作。

Stylus Studio

Netbeans IDE这是免费的

你也可以找到一个开源工具here.

1

我想你可以写JSON并将其转换为XML。 JSON.NET能够在两种格式之间转换。

这个XML:

<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> 
<glossary><title>example glossary</title> 
    <GlossDiv><title>S</title> 
    <GlossList> 
    <GlossEntry ID="SGML" SortAs="SGML"> 
    <GlossTerm>Standard Generalized Markup Language</GlossTerm> 
    <Acronym>SGML</Acronym> 
    <Abbrev>ISO 8879:1986</Abbrev> 
    <GlossDef> 
     <para>A meta-markup language, used to create markup 
languages such as DocBook.</para> 
     <GlossSeeAlso OtherTerm="GML"> 
     <GlossSeeAlso OtherTerm="XML"> 
    </GlossDef> 
    <GlossSee OtherTerm="markup"> 
    </GlossEntry> 
    </GlossList> 
    </GlossDiv> 
</glossary> 

看起来这在JSON:

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
      "SortAs": "SGML", 
      "GlossTerm": "Standard Generalized Markup Language", 
      "Acronym": "SGML", 
      "Abbrev": "ISO 8879:1986", 
      "GlossDef": { 
           "para": "A meta-markup language, used to create markup languages such as DocBook.", 
        "GlossSeeAlso": ["GML", "XML"] 
          }, 
       "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 
+0

不幸的是,我不认为你的JSON的翻译是在许多JSON解析器忠诚。我的理解并不保留json成员的顺序,但是需要保留顺序以用于忠实的xml表示。 – Davorak 2014-11-14 22:17:22

0

如果您希望在处理XML文档时具有(大部分)XSLT的表现力,但您不喜欢XPath之外的详细语法,那么也许您应该看看XQuery

+0

我还没有看到任何本机支持Xquery的浏览器,但所有主流浏览器都支持XSLT。 – Breton 2009-08-16 01:10:02

+0

浏览器对于XSLT来说是一个相当小的位置 - 它有更多的用途,我甚至会争辩说它在浏览器中毫无意义。此外,XQuery是XSLT 2.0的替代品,而不是1.0 - 我知道的所有浏览器只支持1.0。 – 2009-08-16 07:50:26

0

当涉及到维护任何基于SGML的应用程序时,Oxygen XML应用程序可以创造奇迹。不要试图写在记事本中的XSLT,你可能最终自杀:)

http://www.oxygenxml.com/