语义WEB关于XML操作小程序开源分享

举报
小康不会AI 发表于 2022/09/12 23:45:56 2022/09/12
【摘要】 语义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写的是十三陵中的长陵和定陵。
1.jpg


cf2f93695bd617877d1b58e8048126a.jpg

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))>

程序实现各个功能说明:

  1. 界面搭建:
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()

界面:
image.png

2.打开并展示xml
image.png


image.png

3.之后我们用我们之前匹配的dtd校验是否正确:
image.png
image.png

再来个错误的:
第一种情况:xml文件符合规则但是不符合dtd
image.png
image.png

第二种情况:xml文件直接不符合规则,我们直接删掉几行字
image.png

image.png

4.xpath功能:
image.png
可以发现成功检索除了长陵和定陵。

5.转换成html功能:
image.png
image.png
可以发现成功导出到了目录下并转化成功,全部代码已经上传百度网盘,请想要研究的亲们自行研究并改进哈。

项目下载:

链接:https://pan.baidu.com/s/1CtwfwkAmXdAqrNIspRNvIg?pwd=2zhy
提取码:2zhy

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。