我继承了一些xml文件,其中所有的标记都是大写的。我想使用正则表达式或通过XSLT将它们转换为小写。如果能够知道这两种方法,那将非常方便。不幸的是,我发现正则表达式和XSLT语法有时令人困惑,但我正在努力。:)
(Edit:添加以下人为示例)
之前:
<?xml version="1.0"?>
<NOVEL TITLE="Now That's A Novel Title" AUTHOR="Harry Handelbar">
<PREFACE> <!-- XHTML FORMATTED TEXT -->
<P>It would be remiss of me to neglect to thank the bottle.</P>
</PREFACE>
<CHAPTER TITLE="" TYPE="NUM">
<PROLOGUE>Success, like death, marks the end of... </PROLOGUE>
<MAINTEXT> <!-- XHTML FORMATTED TEXT -->
<P>It seems a violent betrayal, me divulging how...</P>
<P>The years had not been kind Felix Lake. His constant...</P>
</MAINTEXT>
</CHAPTER>
<CHAPTER TITLE="" TYPE="NUM">
<MAINTEXT> <!-- XHTML FORMATTED TEXT -->
<P>As luck would not have it, he did.</P>
<!-- ECT ECT ECT -->
</MAINTEXT>
</CHAPTER>
</NOVEL>
之后:
<?xml version="1.0"?>
<novel title="Now That's A Novel Title" author="Harry Handelbar">
<preface> <!-- XHTML FORMATTED TEXT -->
<p>It would be remiss of me to neglect to thank the bottle.</p>
</preface>
<chapter title="" type="NUM">
<prologue>Success, like death, marks the end of... </prologue>
<maintext> <!-- XHTML FORMATTED TEXT -->
<p>It seems a violent betrayal, me divulging how...</p>
<p>The years had not been kind Felix Lake. His constant...</p>
</maintext>
</chapter>
<chapter title="" type="NUM">
<maintext> <!-- XHTML FORMATTED TEXT -->
<p>As luck would not have it, he did.</p>
<!-- ECT ECT ECT -->
</maintext>
</chapter>
</novel>
希望能有所帮助。
编辑:我对P标签的错误- after也应该是小写的)
4条答案
按热度按时间sirbozc51#
尝试(未测试):
XSLT 2.0:
上述内容的XSLT 1.0版本如下所示:
但是,这是假设您的元素和属性名称不包含除明确列出的26个字符以外的大写字符(即,不包含俄语、希腊语、变音符号等)。
ulydmbyx2#
尝试使用此正则表达式:
在线测试人员:http://regex101.com/#PCRE
享受您的代码
ie3xauqp3#
通过使用PHP,你可以这样做...
它工作正常;)
fwzugrvs4#
在我看来,您可能需要2个正则表达式-一个用于转换标记名,另一个用于转换可变数量的属性-值对。
我是这么做的-
old.xml是您的Before xml,new.xml是您的After xml。processed.xml是命令生成的文件。
正如你所看到的,你的after xml中的P标签仍然是大写的。我不确定他们是错别字还是例外。我把他们当作错别字处理,因为你提到把所有标签都改为小写。
只需稍加修改,就可以在继承的所有XML集上运行这些命令,并快速转换它们。