'encoding UTF-8 Do not remove or change this line!
'*************************************************************************
'
' Licensed to the Apache Software Foundation (ASF) under one
' or more contributor license agreements. See the NOTICE file
' distributed with this work for additional information
' regarding copyright ownership. The ASF licenses this file
' to you under the Apache License, Version 2.0 (the
' "License"); you may not use this file except in compliance
' with the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing,
' software distributed under the License is distributed on an
' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
' KIND, either express or implied. See the License for the
' specific language governing permissions and limitations
' under the License.
'
'*************************************************************************
'*
'* short description : XML Writer Include File
'*
'\***********************************************************************************
Dim Isliste(250) as string
Dim OutputPath as string
sub sxw7_01a
printlog "-------------------------- SXW7_01a.INC ------------------------------"
printlog "---------------------------------------------------------------------"
call tfields
call tfootnotes
end sub
'-------------------------------------------------------------------------
testcase tfields
Dim a as integer
Dim i as integer
Dim AttributeSearch(60) as string
Dim AttributeValue(60) as string
Dim sXMLNodename(50) as string
Dim sPathToAttributes as string
printlog "+- fields.sdw"
'/// Opening file fields.sdw from input-directory.
call hFileOpen (gTesttoolPath & ConvertPath("xml\optional\input\writer\fields.sdw"))
'/// Saving the document in OOo XML 1.0 format.
if hFileSaveAsWithFilterKill (gOfficePath & ConvertPath("user\work\xml\writer\level1\fields.sxw") , "StarOffice XML (Writer)") then
'/// Closing the document also if there is a verification dialog.
call hCloseDocument()
sleep(3)
'/// Unpack the complete content of the file (ZIP-archieve) into a seperate directory.
UnpackStorage( gOfficePath & ConvertPath("user\work\xml\writer\level1\fields.sxw") , gOfficePath & ConvertPath("user\work\xml\writer\level1\fields") )
'/// Checking the well formness of content.xml, styles.xml and meta.xml.
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\fields\meta.xml")) = FALSE then
warnlog "XML-file 'meta.xml' not well formed!"
end if
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\fields\styles.xml")) = FALSE then
warnlog "XML-file 'styles.xml' not well formed!"
end if
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\fields\content.xml")) = FALSE then
warnlog "XML-file 'content.xml' not well formed!"
else
'/// Opening the exported file (GPF check).
call hFileOpen (gOfficePath & ConvertPath("user\work\xml\writer\level1\fields.sxw"))
sleep(2)
'/// Closing the document.
call hCloseDocument
sleep(2)
SAXReadFile(gOfficePath & ConvertPath("user\work\xml\writer\level1\fields\content.xml"))
printlog " ---------------------"
printlog " c o n t e n t . x m l"
printlog " ---------------------"
printlog "----------"
printlog " fields "
printlog "----------"
'-------------------------------------------------------------------------
'/// CONTENT.XML
printlog "++ Feature(s) to be searched for:"
printlog " |"
'-------------------------------------------------------------------------
'/// Searching for: <text:sender-firstname text:fixed="false">
'/// Searching for: <text:sender-lastname text:fixed="false">
sXMLNodename(1) = "text:sender-firstname"
sXMLNodename(2) = "text:sender-lastname"
AttributeSearch(1) = "text:fixed"
AttributeValue(1) = "false"
'/// Searching for: <text:date text:date-value="2000-11-30T16:14:56"
'/// Searching for: <text:time text:time-value="[not null]"
sXMLNodename(3) = "text:date"
AttributeSearch(3) = "text:date-value"
AttributeValue(3) = "2000-11-30T16:14:56"
sXMLNodename(4) = "text:time"
AttributeSearch(4) = "text:time-value"
AttributeValue(4) = ""
'/// Searching for: <text:word-count style:num-format="1">75</text:word-count>
'/// Searching for: <text:character-count style:num-format="1">788</text:character-count>
sXMLNodename(5) = "text:word-count"
'TODO: JSI: Rotine needed for char XML node
'CharNode = 75
sXMLNodename(6) = "text:character-count"
'TODO: JSI: Rotine needed for char XML node
'CharNode = 788
AttributeSearch(5) = "style:num-format"
AttributeValue(5) = "1"
'/// Searching for: <text:reference-mark-start text:name="ref"/>I am a reference<text:reference-mark-end text:name="ref"/>
sXMLNodename(7) = "text:reference-mark-start"
sXMLNodename(8) = "text:reference-mark-end"
AttributeSearch(7) = "text:name"
AttributeValue(7) = "ref"
'/// Searching for: <text:reference-ref text:reference-format="page" text:ref-name="ref">1</text:reference-ref> Chapter: <text:reference-ref text:reference-format="chapter" text:ref-name="ref">1</text:reference-ref> Location: <text:reference-ref text:reference-format="direction" text:ref-name="ref">above</text:reference-ref>
sXMLNodename(9) = "text:reference-ref"
'TODO: JSI: Rotine needed for char XML node
'CharNode: 1 [9]
'CharNode: 1 [10]
'CharNode: above [11]
AttributeSearch(9) = "text:reference-format"
AttributeValue(9) = "page"
AttributeValue(10) = "chapter"
AttributeValue(11) = "direction"
'All three have this attribute and -value:
AttributeSearch(12) = "text:ref-name"
AttributeValue(12) = "ref"
'/// Searching for: <text:variable-set text:name="x" text:value-type="float" text:value="1" style:data-style-name="N0">1</text:variable-set>
sXMLNodename(13) = "text:variable-set"
AttributeSearch(13) = "text:name"
AttributeValue(13) = "x"
AttributeSearch(14) = "text:value-type"
AttributeValue(14) = "float"
AttributeSearch(15) = "text:value"
AttributeValue(15) = "1"
AttributeSearch(16) = "style:data-style-name"
AttributeValue(16) = "N0"
'TODO: JSI: Rotine needed for char XML node
'CharNode: 1
'/// Searching for: <text:user-field-get text:name="I_am_a_user_field">Content of the user field</text:user-field-get>
sXMLNodename(17) = "text:user-field-get"
AttributeSearch(17) = "text:name"
AttributeValue(17) = "I_am_a_user_field"
'TODO: JSI: Rotine needed for char XML node
'CharNode: Content of the user field
'/// Searching for: <text:conditional-text text:condition="x==1" text:string-value-if-true="x = 1" text:string-value-if-false="x <> 1">x = 1</text:conditional-text>
sXMLNodename(18) = "text:conditional-text"
AttributeSearch(18) = "text:condition"
AttributeValue(18) = "x==1"
AttributeSearch(19) = "text:string-value-if-true"
AttributeValue(19) = "x = 1"
AttributeSearch(20) = "text:string-value-if-false"
AttributeValue(20) = "x <> 1"
'TODO: JSI: Rotine needed for char XML node
'CharNode: x = 1
'/// Searching for: <text:hidden-text text:condition="x==1" text:string-value="x is not equal to 1"/>
sXMLNodename(21) = "text:hidden-text"
AttributeSearch(21) = "text:condition"
AttributeValue(21) = "x==1"
AttributeSearch(22) = "text:string-value"
AttributeValue(22) = "x is not equal to 1"
'/// Searching for: <text:hidden-paragraph text:condition="x==1" text:is-hidden="true"/>I am hidden if x=1</text:p>
sXMLNodename(23) = "text:hidden-paragraph"
AttributeSearch(23) = "text:condition"
AttributeValue(23) = "x==1"
AttributeSearch(24) = "text:is-hidden"
AttributeValue(24) = "true"
'TODO: JSI: Rotine needed for char XML node
'CharNode: I am hidden if x=1
'/// Searching for: <text:creation-date style:data-style-name="N36">15/11/2000</text:creation-date>
sXMLNodename(25) = "text:creation-date"
AttributeSearch(25) = "style:data-style-name"
AttributeValue(25) = "N108"
'/// Searching for: '<text:editing-cycles>0</text:editing-cycles>
'sXMLNodename(?) = text:editing-cycles
'TODO: JSI: Rotine needed for char XML node
'CharNode: 0
'/// Searching for: <text:modification-date style:data-style-name="N81">6. mars 2003</text:modification-date>
sXMLNodename(26) = "text:modification-date"
AttributeSearch(26) = "style:data-style-name"
AttributeValue(26) = "N76"
'TODO: JSI: Rotine needed for char XML node
'CharNode: 6. mars 2003
'/// Searching for: <text:database-display text:database-name="Bibliography" text:table-name="biblio" text:table-type="table" text:column-name="Author"><Author></text:database-display>
sXMLNodename(27) = "text:database-display"
AttributeSearch(27) = "text:database-name"
AttributeValue(27) = "Bibliography"
AttributeSearch(28) = "text:table-name"
AttributeValue(28) = "biblio"
AttributeSearch(29) = "text:table-type"
AttributeValue(29) = "table"
AttributeSearch(30) = "text:column-name"
AttributeValue(30) = "Author"
'TODO: JSI: Rotine needed for char XML node
'CharNode:
'/// Searching for: <text:database-next text:database-name="Bibliography" text:table-name="biblio" text:table-type="table" text:condition="TRUE"/>
sXMLNodename(31) = "text:database-next"
AttributeSearch(31) = "text:database-name"
AttributeValue(31) = "Bibliography"
AttributeSearch(32) = "text:table-name"
AttributeValue(32) = "biblio"
AttributeSearch(33) = "text:table-type"
AttributeValue(33) = "table"
AttributeSearch(34) = "text:condition"
AttributeValue(34) = "TRUE"
'/// Searching for: <text:database-display text:database-name="Bibliography" text:table-name="biblio" text:table-type="table" text:column-name="Author"><Author></text:database-display>
sXMLNodename(35) = "text:database-display"
AttributeSearch(35) = "text:database-name"
AttributeValue(35) = "Bibliography"
AttributeSearch(36) = "text:table-name"
AttributeValue(36) = "biblio"
AttributeSearch(37) = "text:table-type"
AttributeValue(37) = "table"
AttributeSearch(38) = "text:column-name"
AttributeValue(38) = "Author"
'TODO: JSI: Rotine needed for char XML node
'CharNode:
'/// Searching for: <text:database-row-number text:database-name="Bibliography" text:table-name="biblio" text:table-type="table" style:num-format="1" text:value="3">3</text:database-row-number>
sXMLNodename(39) = "text:database-row-number"
AttributeSearch(39) = "text:database-name"
AttributeValue(39) = "Bibliography"
AttributeSearch(40) = "text:table-name"
AttributeValue(40) = "biblio"
AttributeSearch(41) = "text:table-type"
AttributeValue(41) = "table"
AttributeSearch(42) = "style:num-format"
AttributeValue(42) = "1"
AttributeSearch(43) = "text:value"
AttributeValue(43) = "3"
'TODO: JSI: Rotine needed for char XML node
'CharNode: 3
'/// Searching for: <text:database-name text:database-name="Bibliography" text:table-name="biblio" text:table-type="table">Bibliography.biblio</text:database-name>
sXMLNodename(44) = "text:database-name"
AttributeSearch(44) = "text:database-name"
AttributeValue(44) = "Bibliography"
AttributeSearch(45) = "text:table-name"
AttributeValue(45) = "biblio"
AttributeSearch(46) = "text:table-type"
AttributeValue(46) = "table"
'TODO: JSI: Rotine needed for char XML node
'CharNode: Bibliography.biblio
for a = 1 to 46
select case a
case 1 , 2 :
' Two nodes have the same attributes and -values as the first one
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(a))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(a) & "] Attribute: " & AttributeSearch(1)
if SAXGetAttributeValue(AttributeSearch(1)) <> AttributeValue(1) then
warnlog "Field: " & AttributeSearch(1) & " is not " & AttributeValue(1) & "!"
end if
SAXSeekElement("/")
case 5 , 6 :
' Two nodes have the same attributes and -values as the first one
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(a))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(a) & "] Attribute: " & AttributeSearch(5)
if SAXGetAttributeValue(AttributeSearch(5)) <> AttributeValue(5) then
warnlog "Field: " & AttributeSearch(5) & " is not " & AttributeValue(5) & "!"
end if
SAXSeekElement("/")
case 7 , 8 : ' Two nodes have the same attributes and -values as the first one
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(a))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(a) & "] Attribute: " & AttributeSearch(7)
if SAXGetAttributeValue(AttributeSearch(7)) <> AttributeValue(7) then
warnlog "Field: " & AttributeSearch(7) & " is not " & AttributeValue(7) & "!"
end if
SAXSeekElement("/")
case 3, 4 :
' The attribute is language dependent and should NOT be NULL
' The if-then-else inquiry is another than in the other inquiries!
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(a))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(a) & "] Attribute: " & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) = AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is null empty!"
end if
SAXSeekElement("/")
case 9 , 10, 11:
' Three times the same element name but not the same XML node
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(9) , a-8)
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(9) & "] Attribute: " & AttributeSearch(9) & "=" & AttributeValue(a)
if SAXGetAttributeValue(AttributeSearch(9)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(9) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 12:
for i = 1 to 3
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(9) , i)
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(9) & " (" & i & ")] Attribute: " & AttributeSearch(12) & "=" & AttributeValue(12)
if SAXGetAttributeValue(AttributeSearch(12)) <> AttributeValue(12) then
warnlog "Field: " & AttributeSearch(12) & " is not " & AttributeValue(12) & "!"
end if
SAXSeekElement("/")
next i
case 21, 22 :
' One node has two attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(21))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(21) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 23, 24 :
' One node has two attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(23))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(23) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 18, 19, 20 :
' One node has three attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(18))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(18) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 44, 45, 46 :
' One node has three attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(44))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(44) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 13, 14, 15, 16 :
' One node has four attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(13))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(13) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 27, 28, 29, 30 :
' One node has four attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(27))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(27) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 31, 32, 33, 34 :
' One node has four attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(31))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(31) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 35, 36, 37, 38 :
' One node has four attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(35))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(35) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 39, 40, 41, 42, 43 :
' One node has five attributes
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(39))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(39) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
case 25, 26 :
'skipping (evaluating different style names under different operating systems
SAXSeekElement("/")
case else :
sPathToAttributes = fWhereIsXMLElementInBody("office:document-content" , "office:body" , sXMLNodename(a))
SAXSeekElement(sPathToAttributes)
printlog " +- [Element: " & sXMLNodename(a) & "]" & AttributeSearch(a)
if SAXGetAttributeValue(AttributeSearch(a)) <> AttributeValue(a) then
warnlog "Field: " & AttributeSearch(a) & " is not " & AttributeValue(a) & "!"
end if
SAXSeekElement("/")
end select
printlog " |"
next a
SAXRelease()
printlog " * * *"
end if
else
call hCloseDocument
end if
endcase
'
'-------------------------------------------------------------------------
'
testcase tfootnotes
Dim a as integer
Dim i as integer
Dim AttributeSearch(60) as string
Dim AttributeValue(60) as string
Dim sXMLNodename(50) as string
Dim sPathToAttributes as string
printlog "+- footnotes.sdw"
'/// Opening file footnotes.sdw from input-directory.
call hFileOpen (gTesttoolPath & ConvertPath("xml\optional\input\writer\footnotes.sdw"))
'/// Saving the document in OOo XML 1.0 format.
if hFileSaveAsWithFilterKill (gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes.sxw") , "StarOffice XML (Writer)") then
'/// Closing the document also if there is a verification dialog.
call hCloseDocument()
sleep(3)
'/// Unpack the complete content of the file (ZIP-archieve) into a seperate directory.
UnpackStorage( gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes.sxw") , gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes") )
'/// Checking the well formness of content.xml, styles.xml and meta.xml.
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes\meta.xml")) = FALSE then
warnlog "XML-file 'meta.xml' not well formed!"
end if
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes\styles.xml")) = FALSE then
warnlog "XML-file 'styles.xml' not well formed!"
end if
if XMLWellformed (gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes\content.xml")) = FALSE then
warnlog "XML-file 'content.xml' not well formed!"
else
'/// Opening the exported file (GPF check).
call hFileOpen (gOfficePath & ConvertPath("user\work\xml\writer\level1\footnotes.sxw"))
sleep(2)
'/// Closing the document.
call hCloseDocument
end if
else
call hCloseDocument
end if
endcase