语义WEB关于XML操作小程序开源分享
【摘要】 语义WEB关于XML操作小程序开源分享 xml xpath
小程序功能及实现说明 (文末附源码及xml等全文件)
程序要求:
1.编写一个可视化界面,显示操作步骤表单。
2.打开xml文件。
3.DTD校验合法性。
4.xml基本检测。
5.xPath查询并显示。
6.xml+xsl转换xml成html。
实现说明:
1.由于有同学因为pyqt被疯狂push,这里用pyqt5实现程序可视化。
2.利用sys和io库来实现xml文件载入。
3.dtd校验合法性,我们利用lxml库的etree。
4.xml基本检测利用try except 来实现。
5.xpath查询也etree
6.最后写一份xsl来实现xml转换成html并写出。
实现过程:
由于假期去玩,直接就地取材。xml写的是十三陵中的长陵和定陵。
xml结构:
<type>
<Tombs>
<title name="Changling">Changling Mausoleum</title>
<environment>nice</environment>
<country>China</country>
<city>Beijing</city>
<price>45</price>
<year>2022</year>
</Tombs>
<Tombs>
<title name="Ding">Ding Mausoleum</title>
<environment>excellent</environment>
<country>China</country>
<city>Beijing</city>
<price>60</price>
<year>2022</year>
</Tombs>
</type>
相应的xsl结构:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>The Ming Tombs</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Title</th>
<th align="left">environment</th>
<th align="left">country</th>
<th align="left">city</th>
<th align="left">price</th>
<th align="left">year</th>
</tr>
<xsl:for-each select="type/Tombs">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="environment"/></td>
<td><xsl:value-of select="country"/></td>
<td><xsl:value-of select="city"/></td>
<td><xsl:value-of select="price"/></td>
<td><xsl:value-of select="year"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
相应的DTD结构:
<?xml version="1.0" encoding="UTF-8"?>
<!--被XMLSpy vDTD产生的2013 sp1 (http://www.altova.com)-->
<!ELEMENT year (#PCDATA)>
<!ELEMENT type ((Tombs+))>
<!ELEMENT title (#PCDATA)>
<!ATTLIST title
name (Ding | Changling) #REQUIRED
>
<!ELEMENT price (#PCDATA)>
<!ELEMENT environment (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT Tombs ((title, environment, country, city, price, year))>
程序实现各个功能说明:
- 界面搭建:
from PyQt5.QtWidgets import *
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 500, 300)
self.setWindowTitle('语义web关于xml作业')
self.tx =QTextEdit (self)
self.tx.setGeometry(20, 20, 300, 100)
self.tx3 =QTextEdit (self)
self.tx3.setGeometry(20,205, 300, 75)
self.tx1 =QLineEdit (self)
self.tx1.setGeometry(200, 173, 130, 20)
self.bt1 = QPushButton('DTD验证合法性', self)
self.bt1.move(350, 20)
self.bt3 = QPushButton('打开文件xml', self)
self.bt3.move(350, 90)
self.bt4 = QPushButton('xPath查询', self)
self.bt4.move(350, 170)
self.bt5 = QPushButton('xml导出为html', self)
self.bt5.move(350, 220)
self.bt1.clicked.connect(self.isavalid)
self.bt3.clicked.connect(self.openFile)
self.bt4.clicked.connect(self.xPath)
self.bt5.clicked.connect(self.saveToFile)
self.bt1.setEnabled(False)
self.bt4.setEnabled(False)
self.bt5.setEnabled(False)
self.show()
界面:
2.打开并展示xml
3.之后我们用我们之前匹配的dtd校验是否正确:
再来个错误的:
第一种情况:xml文件符合规则但是不符合dtd
第二种情况:xml文件直接不符合规则,我们直接删掉几行字
4.xpath功能:
可以发现成功检索除了长陵和定陵。
5.转换成html功能:
可以发现成功导出到了目录下并转化成功,全部代码已经上传百度网盘,请想要研究的亲们自行研究并改进哈。
项目下载:
链接:https://pan.baidu.com/s/1CtwfwkAmXdAqrNIspRNvIg?pwd=2zhy
提取码:2zhy
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)