String expression analysis conservatively approximates the possible string values generated by a program. We consider the
validation of a context-free grammar obtained by the analysis against XML schemas and develop two algorithms for deciding
inclusion L(G
1) ⊆ L(G
2) where G
1 is a context-free grammar and G
2 is either an XML-grammar or a regular hedge grammar. The algorithms for XML-grammars and regular hedge grammars have exponential
and doubly exponential time complexity, respectively. We have incorporated the algorithms into the PHP string analyzer and
validated several publicly available PHP programs against the XHTML DTD. The experiments show that both of the algorithms
are efficient in practice although they have exponential complexity.