我有一个如下的xml。
<!DOCTYPE parent [
<!ENTITY entity1 "value">
]>
<main>
<parent attr1="str1"
attr2="str2">
<child childattr1="str3"
childattr2="&entity1;" />
<child childattr1="str4"
childattr2="&entity1;" />
</parent>
</main>
我需要缩进子元素,将 xml 文件的其余部分保持原样(即不应删除 dtd 部分和实体,属性应位于新行上)。xml 最终应如下所示:
<!DOCTYPE parent [
<!ENTITY entity1 "value">
]>
<main>
<parent attr1="str1"
attr2="str2">
<child childattr1="str3"
childattr2="&entity1;" />
<child childattr1="str4"
childattr2="&entity1;" />
</parent>
</main>
我试过使用xmllint
and tidy
。xmllint
正在缩进子元素,但它没有将属性保留在新行中。tidy
另一方面,可以选择将属性保留在新行中,但无法缩进子元素。我也尝试过使用 perl 正则表达式。这可能可以用 XSLT 完成,但我并不精通它。