XHTML Strict Filter
Tjena!
Jag kör mina sidor genom ett filter för att kunna validera dom som XHTML Strict.
Filtret tar bl.a. bort name-attributet ur form-taggen.
Problemet är att name-attributet inte försvinner om url:en innehåller ett frågetecken.
• Funkar
www.site.com/page.aspx
• Funkar inte
www.site.com/page.aspx?var=foo
Min gissning är att det beror på att url:ens värde hamnar i actrion-attributet och då funkar inte det här uttrycket:
<code>
private static Regex _regForm = new Regex("<form .*name=.* .*>", RegexOptions.Compiled|RegexOptions.IgnoreCase);
private static Regex _regNameReplace = new Regex("name=[^ ]*", RegexOptions.Compiled|RegexOptions.IgnoreCase);
</code>
Här hittar ni hela filtret:
<url>http://w1.316.telia.com/~u31641440/wf/XHTMLStrictFilter.cs</url>
Tack på förhand
/Tor
Svara
Sv: XHTML Strict Filter
Jag ser inget direkt fel, skulle du kunna ge exempel på en form tag.
Använder du en url som ett namn?
Vad du gör är att du söker efter allt som finns efter Name="" och inte efter action.
Jag hänger inte direkt med på din förklaring då du söker på name-attriobutet men torr att felet ligger i ditt action-attribut.
<code>
<form name="otto" action="www.suse.com">
</code>
//johan
Svara
Sv: XHTML Strict Filter
Jo, så här ligger det till.
Kolla HTML-koden på den här sida:
http://www.tommyep.com/consolidate/test/test.aspx
Du ser att filtret tagit bort name-attributet ur form-taggen (dessutom läggs ViewState-fältet inom div-taggar).
Om du sedan lägger till ?var=foo i adressfältet så att adressen till sidan bli:
http://www.tommyep.com/consolidate/test/test.aspx?var=foo
Då försvinner inte name-attributet.
Hänger du med? :-)
Svara
Sv: XHTML Strict Filter
ok.
Antar att så som länken utan ? ser ut är det rätta?
du vill ha resultatet <form id="test">
vare sig?
Men då kan du ju inte posta datan m.m.?
Det som gör felet är din regularexpression, kan du hantera regular expressions? Om inte så finns det gott om info på nätet, sedan har jag ett litet C# program jag kommit över, byggt av en MS anställd på Redmond. Rätt smidigt program.
Om du är intresserad av det, skicka ett mail.
Lösning på ditt probelm: Jag skulle gjort en mer nogrann regularexpression sträng.
Måste iväg nu så jag kan tyvärr inte skriva en till dig. I så fall får du vänta.
//Johan N
Svara
Sv: XHTML Strict Filter
Det enda jag vill är att name-attibutet försvinner ur form-taggen.
Alla andra attribut ska ligga kvar men om inte name försvinner så kan jag inte validera sidan enligt XHTML strict.
Som du skriver så ligger troligtvis felet i min RegEx men jag kan inte se nåt fel.
Felet kan ju även ligga någon annan stans i XHTMLStrictFilter-klassen.
/Tor
Svara
Sv: XHTML Strict Filter
du kör en * i slutet på din regex den betyder allt därefter.
<code>
name="\w[A-z,.?_]*"
</code>
Denna kommer att ta name=" allt som har A-z samt . ? samt _ sedan resten tills den når " du kan lägga till fler tecken om du vill efter _ skriver du bara , och det nya tecknet. Så som & ex:
<code>
name="\w[A-z,.?_,&]*"
</code>
Hoppas det kommer att fungera för dig.
//Johan N
Svara
Sv: XHTML Strict Filter
Nja, det funkar inte riktigt:
Om jag gör så här t.ex:
<code>
private static Regex _regNameReplace = new Regex("name=\"\w[A-z,.?_]*\"", RegexOptions.Compiled|RegexOptions.IgnoreCase);
</code>
Kompilatorn tillåter inte den raden. Jag tror att det är w:et som stular.
Jag vet inte heller vilken RegEx det är som strular. Om det är _regForm eller _regNameReplace.
/Tor
Svara
Sv: XHTML Strict Filter
Du måste lägga till @ då jag nyttjer \ eller så får du skriva \\ för att få \
@ är dock effektivast.
<code>
new Regex(@"name=\"\w[A-z,.?_]*\"", RegexOptions
</code>
//Johan N
Svara