在 emacs XML 模式下,如何漂亮地格式化 XML 模式文件?
我想自动格式化 XML 架构定义文件。 所有正常的漂亮打印内容:结束元素后的换行、缩进。 我已经看到这个答案,以及这个 elisp,它为我提供了基础知识。 不过,除了现有的内容之外,我希望在尖括号内的属性之间进行换行。
就像这样。 之前:
<s:schema elementFormDefault="qualified" targetNamespace="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:tns="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:detail="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:to="urn:Cheeso.2009.05.Finance/TransferObject/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:address="urn:Cheeso.2009.05.Finance/TransferObject/Address/" xmlns:caller="urn:Cheeso.2009.05.Finance/TransferObject/Caller/" xmlns:gwy="urn:Cheeso.2009.05.Finance/TransferObject/Gateway/" xmlns:tender="urn:Cheeso.2009.05.Finance/TransferObject/Tender/" >
...
</s:schema>
之后:
<s:schema
elementFormDefault = "qualified"
targetNamespace = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:tns = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:detail = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:to = "urn:Cheeso.2009.05.Finance/TransferObject/"
xmlns:s = "http://www.w3.org/2001/XMLSchema"
xmlns:address = "urn:Cheeso.2009.05.Finance/TransferObject/Address/"
xmlns:caller = "urn:Cheeso.2009.05.Finance/TransferObject/Caller/"
xmlns:gwy = "urn:Cheeso.2009.05.Finance/TransferObject/Gateway/"
xmlns:tender = "urn:Cheeso.2009.05.Finance/TransferObject/Tender/" >
...
</s:schema>
谁能建议一些可以排列 = 的 elisp 吗?
I want to automatically format an XML schema definition file. All the normal pretty-print stuff: linebreaks after end-element, indentiing. I have seen this answer, and this elisp, which gives me the basics. Beyond what is there, though, I would like line-breaks between attributes within angle-brackets.
Like so. Before:
<s:schema elementFormDefault="qualified" targetNamespace="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:tns="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:detail="urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/" xmlns:to="urn:Cheeso.2009.05.Finance/TransferObject/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:address="urn:Cheeso.2009.05.Finance/TransferObject/Address/" xmlns:caller="urn:Cheeso.2009.05.Finance/TransferObject/Caller/" xmlns:gwy="urn:Cheeso.2009.05.Finance/TransferObject/Gateway/" xmlns:tender="urn:Cheeso.2009.05.Finance/TransferObject/Tender/" >
...
</s:schema>
After:
<s:schema
elementFormDefault = "qualified"
targetNamespace = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:tns = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:detail = "urn:Cheeso.2009.05.Finance/TransferObject/TransactionDetail/"
xmlns:to = "urn:Cheeso.2009.05.Finance/TransferObject/"
xmlns:s = "http://www.w3.org/2001/XMLSchema"
xmlns:address = "urn:Cheeso.2009.05.Finance/TransferObject/Address/"
xmlns:caller = "urn:Cheeso.2009.05.Finance/TransferObject/Caller/"
xmlns:gwy = "urn:Cheeso.2009.05.Finance/TransferObject/Gateway/"
xmlns:tender = "urn:Cheeso.2009.05.Finance/TransferObject/Tender/" >
...
</s:schema>
Can anyone suggest some elisp that can line up the = ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试如下操作:
它可能不完全符合您的要求(我刚刚对其进行了编码),但看起来它应该适用于您展示的情况。
Try something like the following:
It may not do exactly what you want ( I justcoded it up), but it looks like it should work for the case you showed.