Difference between revisions of "User:Arielch/Internship/XML file format"
From Apache OpenOffice Wiki
(→RID_POPUP_CELLS: updated XML to reflect new DTD) |
(→MN_TEXT_POPUPMENU: Updated XML to reflect new DTD) |
||
Line 176: | Line 176: | ||
<!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd"> | <!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd"> | ||
<contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink"> | <contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink"> | ||
− | <contextmenu: | + | <contextmenu:popupmenu> |
− | + | <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:NumberingStart"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ContinueNumbering"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:IncrementLevel"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:DecrementLevel"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:CharFontName"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:FontHeight"/> | |
− | + | <contextmenu:menu xlink:href=".uno:StyleMenu"> | |
− | + | <contextmenu:popupmenu> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Bold"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Italic"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Overline"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Underline"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Strikeout"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Shadowed"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:OutlineFont"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:SuperScript"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:SubScript"/> | |
− | + | </contextmenu:popupmenu> | |
− | + | </contextmenu:menu> | |
− | + | <contextmenu:menu xlink:href=".uno:AlignTextMenu"> | |
− | + | <contextmenu:popupmenu> | |
− | + | <contextmenu:menuitem xlink:href=".uno:LeftPara" contextmenu:style="radio"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:RightPara" contextmenu:style="radio"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:CenterPara" contextmenu:style="radio"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:JustifyPara" contextmenu:style="radio"/> | |
− | + | </contextmenu:popupmenu> | |
− | + | </contextmenu:menu> | |
− | + | <contextmenu:menu xlink:href=".uno:LineSpacingMenu"> | |
− | + | <contextmenu:popupmenu> | |
− | + | <contextmenu:menuitem xlink:href=".uno:SpacePara1" contextmenu:style="radio"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:SpacePara15" contextmenu:style="radio"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:SpacePara2" contextmenu:style="radio"/> | |
− | + | </contextmenu:popupmenu> | |
− | + | </contextmenu:menu> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:FontDialog"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ParagraphDialog"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:PageDialog"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:BulletsAndNumberingDialog"/> | |
− | + | <contextmenu:menu xlink:href=".uno:TransliterateMenu"> | |
− | + | <contextmenu:popupmenu> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToSentenceCase"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToLower"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToUpper"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToTitleCase"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToToggleCase"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHalfWidth"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToFullWidth"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHiragana"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ChangeCaseToKatakana"/> | |
− | + | </contextmenu:popupmenu> | |
− | + | </contextmenu:menu> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:UpdateCurIndex"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:EditCurIndex"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:RemoveTableOf"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:FieldDialog"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:EditFootnote"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:IndexEntryDialog"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:AuthoritiesEntryDialog"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:AcceptTracedChange"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:RejectTracedChange"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:EditStyle"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:EditHyperlink"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:CopyHyperlinkLocation"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:RemoveHyperlink"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:OpenSmartTagMenuOnCursor"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <!-- Thesaurus should have its own controller --> | |
− | + | <contextmenu:menuitem xlink:href=".uno:ThesaurusFromContext"/> | |
− | + | <contextmenu:menuseparator/> | |
− | + | <!-- clipboard functions were added by the SfxPopupMenuManager --> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Cut"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Copy"/> | |
− | + | <contextmenu:menuitem xlink:href=".uno:Paste"/> | |
− | + | </contextmenu:popupmenu> | |
− | + | ||
− | + | ||
</contextmenu:contextmenu> | </contextmenu:contextmenu> | ||
+ | |||
</source> | </source> |
Latest revision as of 01:18, 20 August 2010
Contents
Tasks
- Study DTD: very helpful XML in a Nutshell - Chapter 3. Document Type Definitions (DTDs)
- Study XLink: XML Linking Language (XLink) Version 1.0
- Design the DTD: based on menubar.dtd
- Check the validity: all context menus should pass xmllint --valid
ContextMenu DTD
<?xml version="1.0" encoding="UTF-8"?> <!-- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. Copyright 2000, 2010 Oracle and/or its affiliates. OpenOffice.org - a multi-platform office productivity suite This file is part of OpenOffice.org. OpenOffice.org is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 only, as published by the Free Software Foundation. OpenOffice.org is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License version 3 for more details (a copy is included in the LICENSE file that accompanied this code). You should have received a copy of the GNU Lesser General Public License version 3 along with OpenOffice.org. If not, see <http://www.openoffice.org/license.html> for a copy of the LGPLv3 License. --> <!ELEMENT contextmenu:contextmenu (contextmenu:popupmenu)> <!ATTLIST contextmenu:contextmenu xmlns:contextmenu CDATA #FIXED "http://openoffice.org/2001/contextmenu" xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"> <!ELEMENT contextmenu:popupmenu (contextmenu:menuitem | contextmenu:menuseparator | contextmenu:menu)*> <!ELEMENT contextmenu:menu (contextmenu:popupmenu)> <!ATTLIST contextmenu:menu xlink:href CDATA #REQUIRED contextmenu:helpid CDATA #IMPLIED contextmenu:label CDATA #IMPLIED contextmenu:style CDATA #IMPLIED> <!ELEMENT contextmenu:menuitem EMPTY> <!ATTLIST contextmenu:menuitem xlink:href CDATA #REQUIRED contextmenu:helpid CDATA #IMPLIED contextmenu:label CDATA #IMPLIED contextmenu:style CDATA #IMPLIED> <!ELEMENT contextmenu:menuseparator EMPTY>
- for the attribute holding the command URL we do not follow menubar.dtd (it uses menu:id), we follow the toolbar.dtd and statusbar.dtd where the UNO command URL is stored in a locator attribute (xlink:href)
- while validating the XML files against the DTD, we found that OOo statusbars and menubars do not pass the test:
- in statusbar.dtd, the attribute statusbar:helpid is missing
- in menubar.dtd
- the attribute menu:style is missing
- the element menu:menu is defined to have only one child element of type menu:menupopup, but this fails, for example, in Writer's menubar.xml with <menu:menu menu:id=".uno:ScriptOrganizer"/>
Menu Item Style
The attribute contextmenu:style is defined as unparsed character data. It may contain one or more of the following styles:
- text (corresponds to <idlml>com.sun.star.ui.ItemStyle:TEXT</idlml>)
- image (corresponds to <idlml>com.sun.star.ui.ItemStyle:ICON</idlml>)
- radio (corresponds to <idlml>com.sun.star.ui.ItemStyle:RADIO_CHECK</idlml>)
Two ore more styles must be combined with a plus sign, like "text+image+radio" (although the MenuBar reader handles this, it does not seem to be used in any XML file; the only style explicitly indicated is "radio".
Examples
sc
RID_POPUP_EDIT
The following is the XML version of the Menu structure described in the resource file sc/source/ui/src/popup.src.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd"> <contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/> <contextmenu:menuseparator/> <!-- Menu item controlled by PopupMenuController are NOT treated special see in Writer menubar: <menu:menuitem menu:id=".uno:SetLanguageSelectionMenu"/> <menu:menuitem menu:id=".uno:SetLanguageParagraphMenu"/> <menu:menuitem menu:id=".uno:SetLanguageAllTextMenu"/> --> <contextmenu:menuitem xlink:href=".uno:CharFontName"/> <contextmenu:menuitem xlink:href=".uno:FontHeight"/> <!-- PROBLEM: submenus usually have no command URL RID_MN_FORMAT_STYLE has no UNO command URL of course --> <contextmenu:menu xlink:href=".uno:CellTextStyleMenu" > <!-- fictitious, but à la Writer --> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:Bold"/> <contextmenu:menuitem xlink:href=".uno:Italic"/> <contextmenu:menuitem xlink:href=".uno:Overline"/> <contextmenu:menuitem xlink:href=".uno:Underline"/> <contextmenu:menuitem xlink:href=".uno:UnderlineDouble"/> <contextmenu:menuitem xlink:href=".uno:Strikeout"/> <contextmenu:menuitem xlink:href=".uno:Shadowed"/> <contextmenu:menuitem xlink:href=".uno:OutlineFont"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:SuperScript"/> <contextmenu:menuitem xlink:href=".uno:SubScript"/> </contextmenu:popupmenu> </contextmenu:menu> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:FontDialog"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/> <contextmenu:menuseparator/> <!-- clipboard functions were added by the SfxPopupMenuManager --> <contextmenu:menuitem xlink:href=".uno:Cut"/> <contextmenu:menuitem xlink:href=".uno:Copy"/> <contextmenu:menuitem xlink:href=".uno:Paste"/> </contextmenu:popupmenu> </contextmenu:contextmenu>
RID_POPUP_CELLS
The following is the XLM version of the Menu structure defined in the resource file sc/source/ui/src/popup.src.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd"> <contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:FormatCellDialog"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:InsertCellsRight"/> <contextmenu:menuitem xlink:href=".uno:DeleteCell"/> <contextmenu:menuitem xlink:href=".uno:Delete"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:InsertAnnotation"/> <contextmenu:menuitem xlink:href=".uno:DeleteNote"/> <contextmenu:menuitem xlink:href=".uno:NoteVisible"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:Cut"/> <contextmenu:menuitem xlink:href=".uno:Copy"/> <contextmenu:menuitem xlink:href=".uno:Paste"/> <contextmenu:menuitem xlink:href=".uno:PasteSpecial"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:DataSelect"/> </contextmenu:popupmenu> </contextmenu:contextmenu>
sw
MN_TEXT_POPUPMENU
The following is the XML version of the Menu structure defined in the resource file sw/source/ui/app/mn.src (and many other files it includes).
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE contextmenu:contextmenu SYSTEM "contextmenu.dtd"> <contextmenu:contextmenu xmlns:contextmenu="http://openoffice.org/2001/contextmenu" xmlns:xlink="http://www.w3.org/1999/xlink"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:ResetAttributes"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:NumberingStart"/> <contextmenu:menuitem xlink:href=".uno:ContinueNumbering"/> <contextmenu:menuitem xlink:href=".uno:IncrementLevel"/> <contextmenu:menuitem xlink:href=".uno:DecrementLevel"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:CharFontName"/> <contextmenu:menuitem xlink:href=".uno:FontHeight"/> <contextmenu:menu xlink:href=".uno:StyleMenu"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:Bold"/> <contextmenu:menuitem xlink:href=".uno:Italic"/> <contextmenu:menuitem xlink:href=".uno:Overline"/> <contextmenu:menuitem xlink:href=".uno:Underline"/> <contextmenu:menuitem xlink:href=".uno:Strikeout"/> <contextmenu:menuitem xlink:href=".uno:Shadowed"/> <contextmenu:menuitem xlink:href=".uno:OutlineFont"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:SuperScript"/> <contextmenu:menuitem xlink:href=".uno:SubScript"/> </contextmenu:popupmenu> </contextmenu:menu> <contextmenu:menu xlink:href=".uno:AlignTextMenu"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:LeftPara" contextmenu:style="radio"/> <contextmenu:menuitem xlink:href=".uno:RightPara" contextmenu:style="radio"/> <contextmenu:menuitem xlink:href=".uno:CenterPara" contextmenu:style="radio"/> <contextmenu:menuitem xlink:href=".uno:JustifyPara" contextmenu:style="radio"/> </contextmenu:popupmenu> </contextmenu:menu> <contextmenu:menu xlink:href=".uno:LineSpacingMenu"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:SpacePara1" contextmenu:style="radio"/> <contextmenu:menuitem xlink:href=".uno:SpacePara15" contextmenu:style="radio"/> <contextmenu:menuitem xlink:href=".uno:SpacePara2" contextmenu:style="radio"/> </contextmenu:popupmenu> </contextmenu:menu> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:FontDialog"/> <contextmenu:menuitem xlink:href=".uno:ParagraphDialog"/> <contextmenu:menuitem xlink:href=".uno:PageDialog"/> <contextmenu:menuitem xlink:href=".uno:BulletsAndNumberingDialog"/> <contextmenu:menu xlink:href=".uno:TransliterateMenu"> <contextmenu:popupmenu> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToSentenceCase"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToLower"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToUpper"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToTitleCase"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToToggleCase"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHalfWidth"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToFullWidth"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToHiragana"/> <contextmenu:menuitem xlink:href=".uno:ChangeCaseToKatakana"/> </contextmenu:popupmenu> </contextmenu:menu> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:UpdateCurIndex"/> <contextmenu:menuitem xlink:href=".uno:EditCurIndex"/> <contextmenu:menuitem xlink:href=".uno:RemoveTableOf"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:FieldDialog"/> <contextmenu:menuitem xlink:href=".uno:EditFootnote"/> <contextmenu:menuitem xlink:href=".uno:IndexEntryDialog"/> <contextmenu:menuitem xlink:href=".uno:AuthoritiesEntryDialog"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:AcceptTracedChange"/> <contextmenu:menuitem xlink:href=".uno:RejectTracedChange"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:EditStyle"/> <contextmenu:menuseparator/> <contextmenu:menuitem xlink:href=".uno:OpenHyperlinkOnCursor"/> <contextmenu:menuitem xlink:href=".uno:EditHyperlink"/> <contextmenu:menuitem xlink:href=".uno:CopyHyperlinkLocation"/> <contextmenu:menuitem xlink:href=".uno:RemoveHyperlink"/> <contextmenu:menuitem xlink:href=".uno:OpenSmartTagMenuOnCursor"/> <contextmenu:menuseparator/> <!-- Thesaurus should have its own controller --> <contextmenu:menuitem xlink:href=".uno:ThesaurusFromContext"/> <contextmenu:menuseparator/> <!-- clipboard functions were added by the SfxPopupMenuManager --> <contextmenu:menuitem xlink:href=".uno:Cut"/> <contextmenu:menuitem xlink:href=".uno:Copy"/> <contextmenu:menuitem xlink:href=".uno:Paste"/> </contextmenu:popupmenu> </contextmenu:contextmenu>