Re: Validator fails on PHP instructions inside attribute values

"Philip Taylor (Webmaster, Ret'd)" <P.Taylor@Rhul.Ac.Uk> writes:
> I think there is a better solution : write a custom DTD that extends
> the DOCTYPE against which you are trying to validate by making all
> well-formed constructs of the form
>
>  <?php echo $clang;?>
>
> legal within attribute values and anywhere else that you wish to use
> them but which do not satisfy the formal requirements for a Processing
> Instruction (PI), then validate against that DTD.

Regardless of DTD, you can't have unescaped angle brackets inside
attribute values; nor can you write a DTD that makes <?php ...?>
something else than a PI or allows its use in places where a PI is not
permitted.

<?php ...?> is a well-formed PI and will be ignored by processors that
do not understand it as long as it is used only where a PI is permitted;
I gave a complete list in an earlier reply.

This means you can't do something like

 <div>
 <?php if (red) {?>
 <p style="color: red">
 <?php } else {?>
 <p style="color: black">
 <?php }?>
 Hello!
 </p>
 </div>

because anything other than PHP will ignore the <?php ...?> bits and see

 <div>
 <p style="color: red">
 <p style="color: black">
 Hello!
 </p>
 </div>

which is not well-formed XML.

DES
-- 
Dag-Erling Smørgrav - des@des.no

Received on Wednesday, 21 July 2010 10:53:08 UTC