aboutsummaryrefslogtreecommitdiffstats
path: root/examples/xml/dombookmarks
diff options
context:
space:
mode:
authorAhmed Youssef <xmonader@gmail.com>2009-08-19 20:26:00 +0300
committerAhmed Youssef <xmonader@gmail.com>2009-08-19 20:26:00 +0300
commit704bf0e5e6ed9b2b8a3dcbf8c5ad2648d33f4d3f (patch)
tree84e43bc770019161a349922b88ab2d9a2fcb75a7 /examples/xml/dombookmarks
Init
Diffstat (limited to 'examples/xml/dombookmarks')
-rwxr-xr-xexamples/xml/dombookmarks/dombookmarks.py232
-rw-r--r--examples/xml/dombookmarks/frank.xbel230
-rw-r--r--examples/xml/dombookmarks/jennifer.xbel93
3 files changed, 555 insertions, 0 deletions
diff --git a/examples/xml/dombookmarks/dombookmarks.py b/examples/xml/dombookmarks/dombookmarks.py
new file mode 100755
index 0000000..a2c976a
--- /dev/null
+++ b/examples/xml/dombookmarks/dombookmarks.py
@@ -0,0 +1,232 @@
+#!/usr/bin/env python
+
+"""PyQt4 port of the xml/dombookmarks example from Qt v4.x"""
+
+from PyQt4 import QtCore, QtGui, QtXml
+
+
+class MainWindow(QtGui.QMainWindow):
+ def __init__(self, parent=None):
+ super(MainWindow, self).__init__(parent)
+
+ self.xbelTree = XbelTree()
+ self.setCentralWidget(self.xbelTree)
+
+ self.createActions()
+ self.createMenus()
+
+ self.statusBar().showMessage(self.tr("Ready"))
+
+ self.setWindowTitle(self.tr("DOM Bookmarks"))
+ self.resize(480, 320)
+
+ def open(self):
+ fileName = QtGui.QFileDialog.getOpenFileName(self,
+ self.tr("Open Bookmark File"), QtCore.QDir.currentPath(),
+ self.tr("XBEL Files (*.xbel *.xml)"))
+
+ if fileName.isEmpty():
+ return
+
+ inFile = QtCore.QFile(fileName)
+ if not inFile.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text):
+ QtGui.QMessageBox.warning(self, self.tr("DOM Bookmarks"),
+ self.tr("Cannot read file %1:\n%2.").arg(fileName).arg(inFile.errorString()))
+ return
+
+ if self.xbelTree.read(inFile):
+ self.statusBar().showMessage(self.tr("File loaded"), 2000)
+
+ def saveAs(self):
+ fileName = QtGui.QFileDialog.getSaveFileName(self,
+ self.tr("Save Bookmark File"), QtCore.QDir.currentPath(),
+ self.tr("XBEL Files (*.xbel *.xml)"))
+
+ if fileName.isEmpty():
+ return
+
+ outFile = QtCore.QFile(fileName)
+ if not outFile.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text):
+ QtGui.QMessageBox.warning(self, self.tr("DOM Bookmarks"),
+ self.tr("Cannot write file %1:\n%2.").arg(fileName).arg(outFile.errorString()))
+ return
+
+ if self.xbelTree.write(outFile):
+ self.statusBar().showMessage(self.tr("File saved"), 2000)
+
+ def about(self):
+ QtGui.QMessageBox.about(self, self.tr("About DOM Bookmarks"),
+ self.tr("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 = QtGui.QAction(self.tr("&Open..."), self)
+ self.openAct.setShortcut(self.tr("Ctrl+O"))
+ self.openAct.triggered.connect(self.open)
+
+ self.saveAsAct = QtGui.QAction(self.tr("&Save As..."), self)
+ self.saveAsAct.setShortcut(self.tr("Ctrl+S"))
+ self.saveAsAct.triggered.connect(self.saveAs)
+
+ self.exitAct = QtGui.QAction(self.tr("E&xit"), self)
+ self.exitAct.setShortcut(self.tr("Ctrl+Q"))
+ self.exitAct.triggered.connect(self.close)
+
+ self.aboutAct = QtGui.QAction(self.tr("&About"), self)
+ self.aboutAct.triggered.connect(self.about)
+
+ self.aboutQtAct = QtGui.QAction(self.tr("About &Qt"), self)
+ self.aboutQtAct.triggered.connect(QtGui.qApp.aboutQt)
+
+ def createMenus(self):
+ self.fileMenu = self.menuBar().addMenu(self.tr("&File"))
+ self.fileMenu.addAction(self.openAct)
+ self.fileMenu.addAction(self.saveAsAct)
+ self.fileMenu.addAction(self.exitAct)
+
+ self.menuBar().addSeparator()
+
+ self.helpMenu = self.menuBar().addMenu(self.tr("&Help"))
+ self.helpMenu.addAction(self.aboutAct)
+ self.helpMenu.addAction(self.aboutQtAct)
+
+
+class XbelTree(QtGui.QTreeWidget):
+ def __init__(self, parent=None):
+ super(XbelTree, self).__init__(parent)
+
+ labels = QtCore.QStringList()
+ labels << self.tr("Title") << self.tr("Location")
+
+ self.header().setResizeMode(QtGui.QHeaderView.Stretch)
+ self.setHeaderLabels(labels)
+
+ self.domDocument = QtXml.QDomDocument()
+
+ self.domElementForItem = {}
+
+ self.folderIcon = QtGui.QIcon()
+ self.bookmarkIcon = QtGui.QIcon()
+
+ self.folderIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirClosedIcon),
+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ self.folderIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_DirOpenIcon),
+ QtGui.QIcon.Normal, QtGui.QIcon.On)
+ self.bookmarkIcon.addPixmap(self.style().standardPixmap(QtGui.QStyle.SP_FileIcon))
+
+ def read(self, device):
+ ok, errorStr, errorLine, errorColumn = self.domDocument.setContent(device, True)
+ if not ok:
+ QtGui.QMessageBox.information(self.window(),
+ self.tr("DOM Bookmarks"),
+ self.tr("Parse error at line %1, column %2:\n%3").arg(errorLine).arg(errorColumn).arg(errorStr))
+ return False
+
+ root = self.domDocument.documentElement()
+ if root.tagName() != "xbel":
+ QtGui.QMessageBox.information(self.window(),
+ self.tr("DOM Bookmarks"),
+ self.tr("The file is not an XBEL file."))
+ return False
+ elif root.hasAttribute("version") and root.attribute("version") != "1.0":
+ QtGui.QMessageBox.information(self.window(),
+ self.tr("DOM Bookmarks"),
+ self.tr("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:
+ pass
+
+ child = root.firstChildElement("folder")
+ while not child.isNull():
+ self.parseFolderElement(child)
+ child = child.nextSiblingElement("folder")
+
+ self.itemChanged.connect(self.updateDomElement)
+
+ return True
+
+ def write(self, device):
+ indentSize = 4
+
+ out = QtCore.QTextStream(device)
+ self.domDocument.save(out, indentSize)
+ return True
+
+ def updateDomElement(self, item, column):
+ element = self.domElementForItem.get(id(item))
+ if not element.isNull():
+ if column == 0:
+ oldTitleElement = element.firstChildElement("title")
+ newTitleElement = self.domDocument.createElement("title")
+
+ newTitleText = self.domDocument.createTextNode(item.text(0))
+ newTitleElement.appendChild(newTitleText)
+
+ element.replaceChild(newTitleElement, oldTitleElement)
+ else:
+ if element.tagName() == "bookmark":
+ element.setAttribute("href", item.text(1))
+
+ def parseFolderElement(self, element, parentItem=None):
+ item = self.createItem(element, parentItem)
+
+ title = element.firstChildElement("title").text()
+ if title.isEmpty():
+ title = QtCore.QObject.tr("Folder")
+
+ item.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
+ item.setIcon(0, self.folderIcon)
+ item.setText(0, title)
+
+ folded = (element.attribute("folded") != "no")
+ self.setItemExpanded(item, not folded)
+
+ child = element.firstChildElement()
+ while not child.isNull():
+ if child.tagName() == "folder":
+ self.parseFolderElement(child, item)
+ elif child.tagName() == "bookmark":
+ childItem = self.createItem(child, item)
+
+ title = child.firstChildElement("title").text()
+ if title.isEmpty():
+ title = QtCore.QObject.tr("Folder")
+
+ childItem.setFlags(item.flags() | QtCore.Qt.ItemIsEditable)
+ childItem.setIcon(0, self.bookmarkIcon)
+ childItem.setText(0, title)
+ childItem.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, QtCore.QString(30 * "\xB7"))
+
+ child = child.nextSiblingElement()
+
+ def createItem(self, element, parentItem=None):
+ item = QtGui.QTreeWidgetItem()
+
+ if parentItem is not None:
+ item = QtGui.QTreeWidgetItem(parentItem)
+ else:
+ item = QtGui.QTreeWidgetItem(self)
+
+ self.domElementForItem[id(item)] = element
+ return item
+
+
+if __name__ == '__main__':
+
+ import sys
+
+ app = QtGui.QApplication(sys.argv)
+ mainWin = MainWindow()
+ mainWin.show()
+ mainWin.open()
+ sys.exit(app.exec_())
diff --git a/examples/xml/dombookmarks/frank.xbel b/examples/xml/dombookmarks/frank.xbel
new file mode 100644
index 0000000..07a9463
--- /dev/null
+++ b/examples/xml/dombookmarks/frank.xbel
@@ -0,0 +1,230 @@
+<?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 Catalogue of Electronic Texts.</title>
+ </bookmark>
+ </folder>
+</xbel>
diff --git a/examples/xml/dombookmarks/jennifer.xbel b/examples/xml/dombookmarks/jennifer.xbel
new file mode 100644
index 0000000..1f7810b
--- /dev/null
+++ b/examples/xml/dombookmarks/jennifer.xbel
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE xbel>
+<xbel version="1.0">
+ <folder folded="no">
+ <title>Qt Resources</title>
+ <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>
+ </bookmark>
+ <bookmark href="http://partners.trolltech.com/partners/resellers.html">
+ <title>Value Added Resellers (VARs)</title>
+ </bookmark>
+ </folder>
+ <folder folded="yes">
+ <title>Community Resources</title>
+ <bookmark href="http://www.qtforum.org/">
+ <title>QtForum.org</title>
+ </bookmark>
+ <bookmark href="http://www.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/">
+ <title>German Qt Forum</title>
+ </bookmark>
+ <bookmark href="http://www.korone.net/">
+ <title>Korean Qt Community Site</title>
+ </bookmark>
+ <bookmark href="http://prog.org.ru/forum/forum_14.html">
+ <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/">
+ <title>Dictionary.com</title>
+ </bookmark>
+ <bookmark href="http://www.m-w.com/">
+ <title>Merriam-Webster Online</title>
+ </bookmark>
+ <bookmark href="http://dictionary.cambridge.org/">
+ <title>Cambridge Dictionaries Online</title>
+ </bookmark>
+ <bookmark href="http://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>
+ <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/">
+ <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>