Tjena! Jag ser inget direkt fel, skulle du kunna ge exempel på en form tag. Jo, så här ligger det till. ok. Det enda jag vill är att name-attibutet försvinner ur form-taggen. du kör en * i slutet på din regex den betyder allt därefter. Nja, det funkar inte riktigt: Du måste lägga till @ då jag nyttjer \ eller så får du skriva \\ för att få \ XHTML Strict Filter
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
/TorSv: XHTML Strict Filter
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>
//johanSv: XHTML Strict Filter
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? :-)Sv: XHTML Strict Filter
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 NSv: XHTML Strict Filter
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.
/TorSv: XHTML Strict Filter
<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 NSv: XHTML Strict Filter
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.
/TorSv: XHTML Strict Filter
@ är dock effektivast.
<code>
new Regex(@"name=\"\w[A-z,.?_]*\"", RegexOptions
</code>
//Johan N