簡體   English   中英

在emacs XML模式中,如何格式化XML模式文件?

[英]In emacs XML mode, how to pretty-format an XML schema file?

我想自動格式化XML架構定義文件。 所有正常的漂亮印刷品:end-element,indentiing之后的換行符。 我已經看到了這個答案這個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 =?

嘗試以下內容:

(defun prettyprint-xml ()
  (interactive)
  (goto-char (point-min))
  (while (search-forward "=" (point-max) t)
    (search-forward "\"")
    (search-forward "\"")
    (forward-char)
    (newline-and-indent))
  (align-regexp (point-min) (point-max) "\#"))

它可能不完全符合您的要求(我剛剛編寫了它),但看起來它應該適用於您展示的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM