wise Seniormester
20. oktober 2011 - 00:01 Der er 7 kommentarer og
1 løsning

Select i Xpath, ignorere case

Hej alle i kloge mennesker.

Jeg er ret urutineret i c#, men kender til en del programmeringsprog samt xml og Xpath.
I noget c# kode skal jeg udvælge en XML node via XPATH (Derfor er min spr under XSLT)

Jeg bruger en værdi fra en liste til at slå op i en anden, men de er ikke ens i forhold til store-små bogstaver.

2 Eksempler, den første er jo ens i case på modulname, den anden er ikke!
--------------------------------------------------------
<Frame FrameNumber="1" ReturnAddress="0x26382db3" ModuleName="D:\Keybalance\ipworks6.dll" FunctionName="XMLp_StaticDestroy" FunctionDisplacement="0xab37" />
---->
<Module FullPath="D:\Keybalance\ipworks6.dll" BaseAddress="0x26340000" Size="0x0009b000" TimeStamp="01/05/2007 08:56:24" FileVersion="6.1.2561.0" ProductVersion="6.1.2561.0" />

<Frame FrameNumber="5" ReturnAddress="0x10aac4b" ModuleName="D:\Keybalance\modules\VAM.dll" FunctionName="iModule::`vbase destructor'" FunctionDisplacement="0x1f8b" />
----->
  <Module FullPath="D:\Keybalance\modules\vam.dll" BaseAddress="0x010a0000" Size="0x00124000" TimeStamp="08/30/2011 16:47:13" FileVersion="0.0.0.0" ProductVersion="0.0.0.0" />
--------------------------------------------------------

Jeg slår dem op med denne kode
_ModRec = _xmlDoc.SelectSingleNode("/Exception/Modules/Module[@FullPath='" + ModuleName + "']");

Er der nogen måde jeg kan lave den select ([...]) til at ignorere alle caseændringer? Jeg har overvejet om jeg kan tvinge dem til upper eller lower, men kan jeg i givet fald også det inden i den kode???
jokkejensen Novice
20. oktober 2011 - 08:25 #1
<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />


<xsl:template match="/">
  <xsl:value-of select="translate("DennE TKst Er LowerCasE", $smallcase, $uppercase)" />
</xsl:template>


Så din bliver noget ala:

_ModRec = _xmlDoc.SelectSingleNode("/Exception/Modules/Module[translate(@FullPath, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + ModuleName.ToLower() + "']");
jokkejensen Novice
20. oktober 2011 - 08:28 #2
jeg ved ikke om C# understøtter xpath 2.0, men i givet fald:

_ModRec = _xmlDoc.SelectSingleNode("/Exception/Modules/Module[lower-case(@FullPath)='" + ModuleName.ToLower() + "']");
arne_v Ekspert
20. oktober 2011 - 12:40 #3
Nej. Kun 1.0.

Men der findes 3. parts libs med 2.0 support.
jokkejensen Novice
20. oktober 2011 - 15:16 #4
@Arne > Aner du noget om hvornår ? de er jo knapt færdige med specifikationen på w3c - hvorfor tager sådanne så længe at rulle ud :/ http://www.w3.org/TR/xpath20/

/J
arne_v Ekspert
20. oktober 2011 - 16:49 #5
Det er mit indtryk at det vil kunne tage meget lang tid. Af mig ubegribelige grunde er XPath 2.0 ikke noget der prioriteres ret hoejt generelt.
wise Seniormester
20. oktober 2011 - 22:48 #6
@Jokke

Perfekt det var lige det med translate.
Dog valgte jeg at sammenligne den med ModuleName.ToUpper() frem for ModuleName.ToLower() i dit eksempel ;-)

Jeg var godt faldet over translate i min søgning, men troede den skulle laves i en variabel eller template match.

Hvis du vil have de velfortjente points, så smid lige et svar ellers lukker jeg den en af dagene...
jokkejensen Novice
21. oktober 2011 - 10:25 #7
takker, special tegn skal ofte escapes, ex &amp;

/J
jokkejensen Novice
21. oktober 2011 - 10:25 #8
svar
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Microsoft bekræfter gigant-opkøb af AI-selskabet Nuance
Nuance Communication, der blandt andet har leveret teknologi til Apples Siri, er blevet opkøbt af Microsoft, der mandag eftermiddag bekræfter handlen.
Computerworld
Gigantisk datalæk: 600.000 danskeres Facebook-data offentliggjort på hackerforum
Data om 533 millioner Facebook-brugere på verdensplan er i weekenden blev lækket på hackerforum.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
White paper
Gratis whitepaper: Hvad er EDI, og hvordan kan det styrke min forretning?
Overvejer du EDI, og ønsker du at undersøge, om EDI er den rette investering for din virksomhed?