aboutsummaryrefslogtreecommitdiffstats
path: root/examples/xml
diff options
context:
space:
mode:
Diffstat (limited to 'examples/xml')
-rw-r--r--examples/xml/dombookmarks/doc/dombookmarks.pngbin0 -> 35779 bytes
-rw-r--r--examples/xml/dombookmarks/doc/dombookmarks.rst12
-rw-r--r--examples/xml/dombookmarks/dombookmarks.py277
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pyproject3
-rw-r--r--examples/xml/dombookmarks/frank.xbel230
-rw-r--r--examples/xml/dombookmarks/jennifer.xbel84
6 files changed, 163 insertions, 443 deletions
diff --git a/examples/xml/dombookmarks/doc/dombookmarks.png b/examples/xml/dombookmarks/doc/dombookmarks.png
new file mode 100644
index 000000000..6a500238a
--- /dev/null
+++ b/examples/xml/dombookmarks/doc/dombookmarks.png
Binary files differ
diff --git a/examples/xml/dombookmarks/doc/dombookmarks.rst b/examples/xml/dombookmarks/doc/dombookmarks.rst
new file mode 100644
index 000000000..558cd0fbb
--- /dev/null
+++ b/examples/xml/dombookmarks/doc/dombookmarks.rst
@@ -0,0 +1,12 @@
+DOM Bookmarks Example
+=====================
+
+Provides a reader for XML Bookmark Exchange Language files.
+
+The DOM Bookmarks example provides a reader for XML Bookmark Exchange Language
+(XBEL) files that uses Qt's DOM-based XML API to read and parse the files. The
+SAX Bookmarks example provides an alternative way to read this type of file.
+
+.. image:: dombookmarks.png
+ :width: 400
+ :alt: DOM Bookmark Screenshot
diff --git a/examples/xml/dombookmarks/dombookmarks.py b/examples/xml/dombookmarks/dombookmarks.py
index 9a0168fde..a35aeb0f2 100644
--- a/examples/xml/dombookmarks/dombookmarks.py
+++ b/examples/xml/dombookmarks/dombookmarks.py
@@ -1,59 +1,27 @@
+# Copyright (C) 2013 Riverbank Computing Limited.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-#############################################################################
-##
-## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide2 port of the xml/dombookmarks example from Qt v5.x"""
-
-from PySide2 import QtCore, QtGui, QtWidgets, QtXml
-
-
-class MainWindow(QtWidgets.QMainWindow):
+"""PySide6 port of the xml/dombookmarks example from Qt v5.x"""
+
+import sys
+
+from PySide6.QtCore import QDir, QFile, Qt, QTextStream
+from PySide6.QtGui import QAction, QIcon, QKeySequence
+from PySide6.QtWidgets import (QApplication, QFileDialog, QHeaderView,
+ QMainWindow, QMessageBox, QStyle, QTreeWidget,
+ QTreeWidgetItem)
+from PySide6.QtXml import QDomDocument
+
+
+class MainWindow(QMainWindow):
def __init__(self, parent=None):
- super(MainWindow, self).__init__(parent)
+ super().__init__(parent)
- self.xbelTree = XbelTree()
- self.setCentralWidget(self.xbelTree)
+ self._xbel_tree = XbelTree()
+ self.setCentralWidget(self._xbel_tree)
- self.createActions()
- self.createMenus()
+ self.create_menus()
self.statusBar().showMessage("Ready")
@@ -61,202 +29,193 @@ class MainWindow(QtWidgets.QMainWindow):
self.resize(480, 320)
def open(self):
- fileName = QtWidgets.QFileDialog.getOpenFileName(self,
- "Open Bookmark File", QtCore.QDir.currentPath(),
- "XBEL Files (*.xbel *.xml)")[0]
+ file_name = QFileDialog.getOpenFileName(self,
+ "Open Bookmark File", QDir.currentPath(),
+ "XBEL Files (*.xbel *.xml)")[0]
- if not fileName:
+ if not file_name:
return
- inFile = QtCore.QFile(fileName)
- if not inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text):
- QtWidgets.QMessageBox.warning(self, "DOM Bookmarks",
- "Cannot read file %s:\n%s." % (fileName, inFile.errorString()))
+ in_file = QFile(file_name)
+ if not in_file.open(QFile.ReadOnly | QFile.Text):
+ reason = in_file.errorString()
+ QMessageBox.warning(self, "DOM Bookmarks",
+ f"Cannot read file {file_name}:\n{reason}.")
return
- if self.xbelTree.read(inFile):
+ if self._xbel_tree.read(in_file):
self.statusBar().showMessage("File loaded", 2000)
- def saveAs(self):
- fileName = QtWidgets.QFileDialog.getSaveFileName(self,
- "Save Bookmark File", QtCore.QDir.currentPath(),
- "XBEL Files (*.xbel *.xml)")[0]
+ def save_as(self):
+ file_name = QFileDialog.getSaveFileName(self,
+ "Save Bookmark File", QDir.currentPath(),
+ "XBEL Files (*.xbel *.xml)")[0]
- if not fileName:
+ if not file_name:
return
- outFile = QtCore.QFile(fileName)
- if not outFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text):
- QtWidgets.QMessageBox.warning(self, "DOM Bookmarks",
- "Cannot write file %s:\n%s." % (fileName, outFile.errorString()))
+ out_file = QFile(file_name)
+ if not out_file.open(QFile.WriteOnly | QFile.Text):
+ reason = out_file.errorString()
+ QMessageBox.warning(self, "DOM Bookmarks",
+ f"Cannot write file {file_name}:\n{reason}.")
return
- if self.xbelTree.write(outFile):
+ if self._xbel_tree.write(out_file):
self.statusBar().showMessage("File saved", 2000)
def about(self):
- QtWidgets.QMessageBox.about(self, "About DOM Bookmarks",
- "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's "
- "DOM classes to read and write XML documents.")
-
- def createActions(self):
- self.openAct = QtWidgets.QAction("&Open...", self, shortcut="Ctrl+O",
- triggered=self.open)
-
- self.saveAsAct = QtWidgets.QAction("&Save As...", self, shortcut="Ctrl+S",
- triggered=self.saveAs)
-
- self.exitAct = QtWidgets.QAction("E&xit", self, shortcut="Ctrl+Q",
- triggered=self.close)
-
- self.aboutAct = QtWidgets.QAction("&About", self, triggered=self.about)
-
- self.aboutQtAct = QtWidgets.QAction("About &Qt", self,
- triggered=QtWidgets.qApp.aboutQt)
-
- def createMenus(self):
- self.fileMenu = self.menuBar().addMenu("&File")
- self.fileMenu.addAction(self.openAct)
- self.fileMenu.addAction(self.saveAsAct)
- self.fileMenu.addAction(self.exitAct)
+ QMessageBox.about(self, "About DOM Bookmarks",
+ "The <b>DOM Bookmarks</b> example demonstrates how to use Qt's "
+ "DOM classes to read and write XML documents.")
+
+ def create_menus(self):
+ self._file_menu = self.menuBar().addMenu("&File")
+ self._file_menu.addAction(QAction("&Open...", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_O), triggered=self.open))
+ self._file_menu.addAction(QAction("&Save As...", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_S), triggered=self.save_as))
+ self._file_menu.addAction(QAction("E&xit", self,
+ shortcut=QKeySequence(
+ Qt.CTRL | Qt.Key_Q), triggered=self.close))
self.menuBar().addSeparator()
- self.helpMenu = self.menuBar().addMenu("&Help")
- self.helpMenu.addAction(self.aboutAct)
- self.helpMenu.addAction(self.aboutQtAct)
+ self._help_menu = self.menuBar().addMenu("&Help")
+ self._help_menu.addAction(QAction("&About", self, triggered=self.about))
+ self._help_menu.addAction(QAction("About &Qt", self, triggered=qApp.aboutQt)) # noqa: F821
-class XbelTree(QtWidgets.QTreeWidget):
+class XbelTree(QTreeWidget):
def __init__(self, parent=None):
- super(XbelTree, self).__init__(parent)
+ super().__init__(parent)
- self.header().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
+ self.header().setSectionResizeMode(QHeaderView.Stretch)
self.setHeaderLabels(("Title", "Location"))
- self.domDocument = QtXml.QDomDocument()
+ self._dom_document = QDomDocument()
- self.domElementForItem = {}
+ self._dom_element_for_item = {}
- self.folderIcon = QtGui.QIcon()
- self.bookmarkIcon = QtGui.QIcon()
+ self._folder_icon = QIcon()
+ self._bookmark_icon = QIcon()
- self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirClosedIcon),
- QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.folderIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_DirOpenIcon),
- QtGui.QIcon.Normal, QtGui.QIcon.On)
- self.bookmarkIcon.addPixmap(self.style().standardPixmap(QtWidgets.QStyle.SP_FileIcon))
+ self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirClosedIcon),
+ QIcon.Normal, QIcon.Off)
+ self._folder_icon.addPixmap(self.style().standardPixmap(QStyle.SP_DirOpenIcon),
+ QIcon.Normal, QIcon.On)
+ self._bookmark_icon.addPixmap(self.style().standardPixmap(QStyle.SP_FileIcon))
def read(self, device):
- ok, errorStr, errorLine, errorColumn = self.domDocument.setContent(device, True)
+ ok, errorStr, errorLine, errorColumn = self._dom_document.setContent(device, True)
if not ok:
- QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks",
- "Parse error at line %d, column %d:\n%s" % (errorLine, errorColumn, errorStr))
+ QMessageBox.information(self.window(), "DOM Bookmarks",
+ f"Parse error at line {errorLine}, "
+ f"column {errorColumn}:\n{errorStr}")
return False
- root = self.domDocument.documentElement()
+ root = self._dom_document.documentElement()
if root.tagName() != 'xbel':
- QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks",
- "The file is not an XBEL file.")
+ QMessageBox.information(self.window(), "DOM Bookmarks",
+ "The file is not an XBEL file.")
return False
elif root.hasAttribute('version') and root.attribute('version') != '1.0':
- QtWidgets.QMessageBox.information(self.window(), "DOM Bookmarks",
- "The file is not an XBEL version 1.0 file.")
+ QMessageBox.information(self.window(), "DOM Bookmarks",
+ "The file is not an XBEL version 1.0 file.")
return False
self.clear()
# It might not be connected.
try:
- self.itemChanged.disconnect(self.updateDomElement)
- except:
+ self.itemChanged.disconnect(self.update_dom_element)
+ except RuntimeError:
pass
child = root.firstChildElement('folder')
while not child.isNull():
- self.parseFolderElement(child)
+ self.parse_folder_element(child)
child = child.nextSiblingElement('folder')
- self.itemChanged.connect(self.updateDomElement)
+ self.itemChanged.connect(self.update_dom_element)
return True
def write(self, device):
- indentSize = 4
+ INDENT_SIZE = 4
- out = QtCore.QTextStream(device)
- self.domDocument.save(out, indentSize)
+ out = QTextStream(device)
+ self._dom_document.save(out, INDENT_SIZE)
return True
- def updateDomElement(self, item, column):
- element = self.domElementForItem.get(id(item))
+ def update_dom_element(self, item, column):
+ element = self._dom_element_for_item.get(id(item))
if not element.isNull():
if column == 0:
- oldTitleElement = element.firstChildElement('title')
- newTitleElement = self.domDocument.createElement('title')
+ old_title_element = element.firstChildElement('title')
+ new_title_element = self._dom_document.createElement('title')
- newTitleText = self.domDocument.createTextNode(item.text(0))
- newTitleElement.appendChild(newTitleText)
+ new_title_text = self._dom_document.createTextNode(item.text(0))
+ new_title_element.appendChild(new_title_text)
- element.replaceChild(newTitleElement, oldTitleElement)
+ element.replaceChild(new_title_element, old_title_element)
else:
if element.tagName() == 'bookmark':
element.setAttribute('href', item.text(1))
- def parseFolderElement(self, element, parentItem=None):
- item = self.createItem(element, parentItem)
+ def parse_folder_element(self, element, parentItem=None):
+ item = self.create_item(element, parentItem)
title = element.firstChildElement('title').text()
if not title:
title = "Folder"
- item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
- item.setIcon(0, self.folderIcon)
+ item.setFlags(item.flags() | Qt.ItemIsEditable)
+ item.setIcon(0, self._folder_icon)
item.setText(0, title)
folded = (element.attribute('folded') != 'no')
- self.setItemExpanded(item, not folded)
+ item.setExpanded(not folded)
child = element.firstChildElement()
while not child.isNull():
if child.tagName() == 'folder':
- self.parseFolderElement(child, item)
+ self.parse_folder_element(child, item)
elif child.tagName() == 'bookmark':
- childItem = self.createItem(child, item)
+ child_item = self.create_item(child, item)
title = child.firstChildElement('title').text()
if not title:
title = "Folder"
- childItem.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
- childItem.setIcon(0, self.bookmarkIcon)
- childItem.setText(0, title)
- childItem.setText(1, child.attribute('href'))
+ child_item.setFlags(item.flags() | Qt.ItemIsEditable)
+ child_item.setIcon(0, self._bookmark_icon)
+ child_item.setText(0, title)
+ child_item.setText(1, child.attribute('href'))
elif child.tagName() == 'separator':
- childItem = self.createItem(child, item)
- childItem.setFlags(item.flags() & ~(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable))
- childItem.setText(0, 30 * "\xb7")
+ child_item = self.create_item(child, item)
+ child_item.setFlags(item.flags() & ~(Qt.ItemIsSelectable | Qt.ItemIsEditable))
+ child_item.setText(0, 30 * "\xb7")
child = child.nextSiblingElement()
- def createItem(self, element, parentItem=None):
- item = QtWidgets.QTreeWidgetItem()
+ def create_item(self, element, parentItem=None):
+ item = QTreeWidgetItem()
if parentItem is not None:
- item = QtWidgets.QTreeWidgetItem(parentItem)
+ item = QTreeWidgetItem(parentItem)
else:
- item = QtWidgets.QTreeWidgetItem(self)
+ item = QTreeWidgetItem(self)
- self.domElementForItem[id(item)] = element
+ self._dom_element_for_item[id(item)] = element
return item
if __name__ == '__main__':
-
- import sys
-
- app = QtWidgets.QApplication(sys.argv)
- mainWin = MainWindow()
- mainWin.show()
- mainWin.open()
- sys.exit(app.exec_())
+ app = QApplication(sys.argv)
+ main_win = MainWindow()
+ main_win.show()
+ main_win.open()
+ sys.exit(app.exec())
diff --git a/examples/xml/dombookmarks/dombookmarks.pyproject b/examples/xml/dombookmarks/dombookmarks.pyproject
new file mode 100644
index 000000000..0a0b203a6
--- /dev/null
+++ b/examples/xml/dombookmarks/dombookmarks.pyproject
@@ -0,0 +1,3 @@
+{
+ "files": ["jennifer.xbel", "dombookmarks.py"]
+}
diff --git a/examples/xml/dombookmarks/frank.xbel b/examples/xml/dombookmarks/frank.xbel
deleted file mode 100644
index f498a5e04..000000000
--- a/examples/xml/dombookmarks/frank.xbel
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xbel>
-<xbel version="1.0">
- <folder folded="yes">
- <title>Literate Programming</title>
- <bookmark href="http://www.vivtek.com/litprog.html">
- <title>Synopsis of Literate Programming</title>
- </bookmark>
- <bookmark href="http://vasc.ri.cmu.edu/old_help/Programming/Literate/literate.html">
- <title>Literate Programming: Propaganda and Tools</title>
- </bookmark>
- <bookmark href="http://www.isy.liu.se/%7Eturbell/litprog/">
- <title>Literate Programming by Henrik Turbell</title>
- </bookmark>
- <bookmark href="http://www.desy.de/user/projects/LitProg.html">
- <title>Literate Programming Library</title>
- </bookmark>
- <bookmark href="http://www.loria.fr/services/tex/english/litte.html">
- <title>Literate Programming Basics</title>
- </bookmark>
- <bookmark href="http://ei.cs.vt.edu/%7Ecs5014/courseNotes/4.LiterateProgramming/literate_prog.html">
- <title>Literate Programming Overview</title>
- </bookmark>
- <bookmark href="http://www.perl.com/pub/a/tchrist/litprog.html">
- <title>POD is not Literate Programming</title>
- </bookmark>
- <bookmark href="http://www.cornellcollege.edu/%7Eltabak/publications/articles/swsafety.html">
- <title>Computers That We Can Count On</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/litpro/issues-and-problems.html">
- <title>Literate Programming - Issues and Problems</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?LiterateProgramming">
- <title>Literate Programming - Wiki Pages</title>
- </bookmark>
- <bookmark href="http://developers.slashdot.org/developers/02/05/19/2216233.shtml">
- <title>What is well-commented code?</title>
- </bookmark>
- <bookmark href="http://liinwww.ira.uka.de/bibliography/SE/litprog.html">
- <title>Bibliography on literate programming - A searchable bibliography</title>
- </bookmark>
- <bookmark href="http://www2.umassd.edu/SWPI/ProcessBibliography/bib-codereading.html">
- <title>Program comprehension and code reading bibliography</title>
- </bookmark>
- <bookmark href="http://www.cs.auc.dk/%7Enormark/elucidative-programming/">
- <title>Elucidative Programming</title>
- </bookmark>
- <bookmark href="http://www.msu.edu/%7Epfaffben/avl/index.html">
- <title>AVL Trees (TexiWeb)</title>
- </bookmark>
- <bookmark href="http://literate-programming.wikiverse.org/">
- <title>Literate Programming on Wikiverse</title>
- </bookmark>
- <bookmark href="http://www.pbrt.org/">
- <title>Physically Based Rendering: From Theory to Implementation</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Useful C++ Links</title>
- <folder folded="no">
- <title>STL</title>
- <bookmark href="http://www.sgi.com/tech/stl/table_of_contents.html">
- <title>STL Reference Documentation</title>
- </bookmark>
- <bookmark href="http://www.yrl.co.uk/~phil/stl/stl.htmlx">
- <title>STL Tutorial</title>
- </bookmark>
- <bookmark href="http://www.cppreference.com/cpp_stl.html">
- <title>STL Reference</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Qt</title>
- <bookmark href="http://doc.trolltech.com/2.3/">
- <title>Qt 2.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/3.3/">
- <title>Qt 3.3 Reference</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/4.0/">
- <title>Qt 4.0 Reference</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/">
- <title>Trolltech Home Page</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>IOStreams</title>
- <bookmark href="http://www.cplusplus.com/ref/iostream/index.html">
- <title>IO Stream Library</title>
- </bookmark>
- <bookmark href="http://courses.cs.vt.edu/~cs2604/fall01/binio.html">
- <title>Binary I/O</title>
- </bookmark>
- <bookmark href="http://www.parashift.com/c++-faq-lite/input-output.html">
- <title>I/O Stream FAQ</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>gdb</title>
- <bookmark href="http://www.cs.princeton.edu/~benjasik/gdb/gdbtut.html">
- <title>GDB Tutorial</title>
- </bookmark>
- <bookmark href="http://www.gnu.org/manual/gdb-4.17/html_mono/gdb.html">
- <title>Debugging with GDB</title>
- </bookmark>
- <bookmark href="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/gdb-refcard.pdf">
- <title>GDB Quick Reference Page (PDF) (Handy)</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Classes and Constructors</title>
- <bookmark href="http://www.parashift.com/c++-faq-lite/ctors.html">
- <title>Constructor FAQ</title>
- </bookmark>
- <bookmark href="http://www.juicystudio.com/tutorial/cpp/index.html">
- <title>Organizing Classes</title>
- </bookmark>
- </folder>
- </folder>
- <folder folded="yes">
- <title>Software Documentation or System Documentation</title>
- <bookmark href="http://www.martinfowler.com/distributedComputing/thud.html">
- <title>The Almighty Thud</title>
- </bookmark>
- <bookmark href="http://msdn.microsoft.com/library/techart/cfr.htm">
- <title>Microsoft Coding Techniques and Programming Practices</title>
- </bookmark>
- <bookmark href="http://www.bearcave.com/software/prog_docs.html">
- <title>Software and Documentation</title>
- </bookmark>
- <bookmark href="http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign">
- <title>The Source Code is the Design</title>
- </bookmark>
- <bookmark href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm">
- <title>What is Software Design?</title>
- </bookmark>
- <bookmark href="http://www.mindprod.com/unmain.html">
- <title>How To Write Unmaintainable Code</title>
- </bookmark>
- <bookmark href="http://www.idinews.com/selfDoc.html">
- <title>Self Documenting Program Code Remains a Distant Goal</title>
- </bookmark>
- <bookmark href="http://www.sdmagazine.com/documents/s=730/sdm0106m/0106m.htm">
- <title>Place Tab A in Slot B</title>
- </bookmark>
- <bookmark href="http://www.holub.com/class/uml/uml.html">
- <title>UML Reference Card</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>TeX Resources</title>
- <bookmark href="http://www.tug.org/">
- <title>The TeX User's Group</title>
- </bookmark>
- <bookmark href="http://www.miktex.org/">
- <title>MikTeX website</title>
- </bookmark>
- <bookmark href="http://cm.bell-labs.com/who/hobby/MetaPost.html">
- <title>MetaPost website</title>
- </bookmark>
- <bookmark href="http://pauillac.inria.fr/%7Emaranget/hevea/">
- <title>HEVEA is a quite complete and fast LATEX to HTML translator</title>
- </bookmark>
- </folder>
- <folder folded="no">
- <title>Portable Document Format (PDF)</title>
- <bookmark href="http://www.adobe.com/">
- <title>Adobe - The postscript and PDF standards</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/technotes/acrobatpdf.html">
- <title>Reference Manual Portable Document Format</title>
- </bookmark>
- <bookmark href="http://partners.adobe.com/asn/developer/acrosdk/main.html">
- <title>Adobe Acrobat Software Development Kit</title>
- </bookmark>
- </folder>
- <folder folded="yes">
- <title>Literature Sites</title>
- <bookmark href="http://www.cc.columbia.edu/cu/libraries/subjects/speccol.html">
- <title>Guide to Special Collections (Columbia University)</title>
- </bookmark>
- <bookmark href="http://www.ipl.org/ref/litcrit/">
- <title>Literary Criticism on the Web from the Internet Public Library</title>
- </bookmark>
- <bookmark href="http://www.victorianweb.org/">
- <title>Victorian Web.</title>
- </bookmark>
- <bookmark href="http://vos.ucsb.edu/">
- <title>Voice of the Shuttle.</title>
- </bookmark>
- <bookmark href="http://www.modjourn.brown.edu/">
- <title>Modernist Journals Project</title>
- </bookmark>
- <bookmark href="http://www.poetspath.com">
- <title>Museum of American Poetics</title>
- </bookmark>
- <bookmark href="http://www.english.uiuc.edu/maps/">
- <title>Modern American Poetry</title>
- </bookmark>
- <bookmark href="http://www.findarticles.com/">
- <title>FindArticles.com</title>
- </bookmark>
- <bookmark href="http://www.literaryhistory.com">
- <title>Literary History</title>
- </bookmark>
- <bookmark href="http://www.litencyc.com/LitEncycFrame.htm">
- <title>Literary Encyclopedia</title>
- </bookmark>
- <separator/>
- <bookmark href="http://texts.cdlib.org/ucpress/">
- <title>The University of California Press</title>
- </bookmark>
- <bookmark href="http://www.letrs.indiana.edu/web/w/wright2/">
- <title>Wright American Fiction, 1851-1875</title>
- </bookmark>
- <bookmark href="http://docsouth.unc.edu/">
- <title>Documenting the American South: Beginnings to 1920</title>
- </bookmark>
- <bookmark href="http://etext.lib.virginia.edu/eng-on.html">
- <title>Electronic Text Center at the University of Virginia</title>
- </bookmark>
- <bookmark href="http://digital.nypl.org/schomburg/writers_aa19/">
- <title>The Schomburg Center for Research in Black Culture</title>
- </bookmark>
- <bookmark href="http://www.infomotions.com/alex2/">
- <title>Alex Catalog of Electronic Texts.</title>
- </bookmark>
- </folder>
-</xbel>
diff --git a/examples/xml/dombookmarks/jennifer.xbel b/examples/xml/dombookmarks/jennifer.xbel
index 1f7810b94..d50423683 100644
--- a/examples/xml/dombookmarks/jennifer.xbel
+++ b/examples/xml/dombookmarks/jennifer.xbel
@@ -3,91 +3,67 @@
<xbel version="1.0">
<folder folded="no">
<title>Qt Resources</title>
+ <bookmark href="https://www.qt.io/">
+ <title>Qt home page</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/contact-us/partners">
+ <title>Qt Partners</title>
+ </bookmark>
+ <bookmark href="https://www.qt.io/qt-professional-services">
+ <title>Professional Services</title>
+ </bookmark>
+ <bookmark href="https://doc.qt.io/">
+ <title>Qt Documentation</title>
+ </bookmark>
<folder folded="yes">
- <title>Trolltech Partners</title>
- <bookmark href="http://partners.trolltech.com/partners/training.html">
- <title>Training Partners</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/service.html">
- <title>Consultants and System Integrators</title>
- </bookmark>
- <bookmark href="http://partners.trolltech.com/partners/tech.html">
- <title>Technology Partners</title>
+ <title>Community Resources</title>
+ <bookmark href="https://contribute.qt-project.org">
+ <title>The Qt Project</title>
</bookmark>
- <bookmark href="http://partners.trolltech.com/partners/resellers.html">
- <title>Value Added Resellers (VARs)</title>
+ <bookmark href="https://www.qtcentre.org/content/">
+ <title>Qt Centre</title>
</bookmark>
- </folder>
- <folder folded="yes">
- <title>Community Resources</title>
- <bookmark href="http://www.qtforum.org/">
- <title>QtForum.org</title>
+ <bookmark href="https://forum.qt.io/">
+ <title>Forum.Qt.org</title>
</bookmark>
- <bookmark href="http://www.digitalfanatics.org/projects/qt_tutorial/">
+ <bookmark href="https://digitalfanatics.org/projects/qt_tutorial/">
<title>The Independent Qt Tutorial</title>
</bookmark>
- <bookmark href="http://prog.qt.free.fr/">
- <title>French PROG.Qt</title>
- </bookmark>
- <bookmark href="http://www.qtforum.de/">
+ <bookmark href="https://www.qtforum.de/">
<title>German Qt Forum</title>
</bookmark>
- <bookmark href="http://www.korone.net/">
+ <bookmark href="https://www.qt-dev.com/">
<title>Korean Qt Community Site</title>
</bookmark>
- <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <bookmark href="http://www.prog.org.ru/">
<title>Russian Qt Forum</title>
</bookmark>
- <bookmark href="http://qt4.digitalfanatics.org/">
- <title>Digitalfanatics: The QT 4 Resource Center</title>
- </bookmark>
- <bookmark href="http://www.qtquestions.org/">
- <title>QtQuestions</title>
- </bookmark>
</folder>
- <bookmark href="http://doc.trolltech.com/qq/">
- <title>Qt Quarterly</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/">
- <title>Trolltech's home page</title>
- </bookmark>
- <bookmark href="http://doc.trolltech.com/4.0/">
- <title>Qt 4.0 documentation</title>
- </bookmark>
- <bookmark href="http://www.trolltech.com/developer/faqs/">
- <title>Frequently Asked Questions</title>
- </bookmark>
</folder>
<folder folded="no">
<title>Online Dictionaries</title>
- <bookmark href="http://www.dictionary.com/">
+ <bookmark href="https://www.dictionary.com/">
<title>Dictionary.com</title>
</bookmark>
- <bookmark href="http://www.m-w.com/">
+ <bookmark href="https://www.merriam-webster.com/">
<title>Merriam-Webster Online</title>
</bookmark>
- <bookmark href="http://dictionary.cambridge.org/">
+ <bookmark href="https://dictionary.cambridge.org/">
<title>Cambridge Dictionaries Online</title>
</bookmark>
- <bookmark href="http://www.onelook.com/">
+ <bookmark href="https://www.onelook.com/">
<title>OneLook Dictionary Search</title>
</bookmark>
<separator/>
- <bookmark href="www.iee.et.tu-dresden.de/">
- <title>The New English-German Dictionary</title>
- </bookmark>
- <bookmark href="http://dict.tu-chemnitz.de/">
- <title>TU Chemnitz German-English Dictionary</title>
+ <bookmark href="https://dict.tu-chemnitz.de/">
+ <title>BEOLINGUS, a service of TU Chemnitz</title>
</bookmark>
<separator/>
<bookmark href="http://atilf.atilf.fr/tlf.htm">
<title>Trésor de la Langue Française informatisé</title>
</bookmark>
- <bookmark href="http://dictionnaires.atilf.fr/dictionnaires/ACADEMIE/">
+ <bookmark href="https://www.dictionnaire-academie.fr/">
<title>Dictionnaire de l'Académie Française</title>
</bookmark>
- <bookmark href="http://elsap1.unicaen.fr/cgi-bin/cherches.cgi">
- <title>Dictionnaire des synonymes</title>
- </bookmark>
</folder>
</xbel>