Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE

XML sprogstyring

Side 1 ud af 1 (3 indlæg)
  • 1
Fra Stenløse
Tilmeldt 23. Jun 06
Indlæg ialt: 3040
Fra  iMARKETING Skrevet kl. 17:41
Hvor mange stjerner giver du? :

Hej med jer:

Jeg roder lige med at få xml i gang til styring af sprog og håber på et tip på at få det til at køre 

XML filen ser sådan ud:

<Language>
   <Word type="FirstName" level="1">
      <English>Name</English>
      <Danish>Fornavn</Danish>
   </Word>
   <Word type="LastName" level="1">
      <English>Family name</English>
      <Danish>Efternavn</Danish>
   </Word>
</Language>

Her er asp filens funktion:

 Function Lang(txt)
  If cfgMultilanguage = 1 Then
   Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
   objXMLDoc.async = False
   objXMLDoc.load("D:\www2\domain\xmlfldr\language.xml")

txt = "FirstName"

   Select Case lg
   Case 1
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word[@type=""" & txt & """]")
   Case 2
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English") 
   Case 3
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 4
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 5
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 6
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 7
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 8
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 9
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 10
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 11
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case 12
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   Case Else
    Set NodeList = objXMLDoc.documentElement.selectNodes("Word/English")
   End Select
End If

 

     For Each Node In NodeList
     
      'Result = Result & " *" & txt & "* "
      'Result = Result & " *" & lg & "* "
      'Result = Result & " [" & node.attributes.getnameditem("type").value & "] "

         If txt = node.attributes.getnameditem("type").value Then

        Result = Result & " - " & (Node.text & "...<br>")

      End If

 

     Next
 Lang = Result
 End Function 
 
 

Lige nu får jeg begge sprog skrevet ud.

Den skriver intet ud hvis jeg indfører "Word/English i stedet for "Word"

Hvordan får jeg  kun skrevet eet sprog ud af gangen?

Ville meget gerne have <English> taggen med i løkken for så kan jeg nøjes med at skrive ud når jeg rammer den rigtige tag.

Det lader også til, at man kan selecte så man slet ikke behøver at køre gennem alle resultaterne.

 (Jeg fremsender variablen FirstName når jeg kalder funktionen - er sat ind her til testformål)

Har en fornemmelse, at svaret ligger lige for, så der skal nok bare et par andre øjne på det Smile

Jeg ser frem til et godt svar.

Venlig hilsen,
Christian

Tilmeldt 26. Mar 09
Indlæg ialt: 964
Skrevet kl. 22:37
Hvor mange stjerner giver du? :

Hej Christian,

Jeg kender intet til asp, men en del til andre sprog - og xPath er ikke min stærke side, men jeg giver det et skud alligevel  Big Smile

Burde du ikke have en <?xml version="1.0" encoding="ISO-8859-1"?>  i starten af din fil ?

Jeg kan ikke se at lg bliver tildelt en værdi nogen steder.

Anyways, så prøv at skære din kode ind til benet og få det til at virke inden du laver de mere komplekse ting.

Dvs. start med at lave en XPath manuelt, så du er sikker på at du får valgt de rigtige noder.

Dvs at den her : objXMLDoc.documentElement.selectNodes("Word[@type=""" & txt & """]")

kan du udskifte med

objXMLDoc.documentElement.selectNodes("/Language/Word[@type='FirstName']")     for at se om du får de to noder.

Herefter kan du jo så vælge den specifikke node du skal bruge (dvs. der er ingen grund til at bruge selectnodes, når du kan nøjes med en SelectSingleNode :

objXMLDoc.documentElement.selectSingleNode("/Language/Word[@type='FirstName']/English").text    

for at se om det giver dig værdien "Name"

Når det så virker kan du udskifte hhv. FirstName og English med de parametre der nu er gældende.

Hvis ikke det virker, så start fra toppen af hierarkiet med at hente et niveau ad gangen, så se at du får de resultater du forventer.

Så vidt jeg kan se, så skal attributnavnene skrives med single quoutes i xPath og ikke double quotes som du har brugt.

Håber det gav lidt inspiration til at få det til at funke. Eller må du lige skrive igen Big Smile

mvh

Jan

 

Fra Stenløse
Tilmeldt 23. Jun 06
Indlæg ialt: 3040
Fra  iMARKETING Skrevet kl. 12:44
Hvor mange stjerner giver du? :

Tusind tak for hjælpen, Technocowboy Smile

Det virker Yes

Du har fået et stort + i bogen.

Venlig hilsen,

Christian

Side 1 ud af 1 (3 indlæg)