Я начал использовать RelaxNG для определения схем сообщений XML и использовать PHP DOMDocument для проверки и анализа входящих сообщений, но не могу понять, как определить текстовый узел, чтобы он не мог быть пустым. Пример схемы:
<?xml version="1.0"?>
<element name="amhAPI" xmlns="http://relaxng.org/ns/structure/1.0">
<element name="auth">
<element name="validateUser">
<element name="username">
<text/>
</element>
<element name="password">
<text/>
</element>
</element>
</element>
</element>
Однако приведенное ниже сообщение проверяется как правильное с помощью метода DOMDocument :: relaxNGValidate (поскольку relaxng соответствует любой произвольной строке [включая пустую] с text
шаблон) и эквивалентно):
<?xml version="1.0"?>
<amhAPI>
<auth>
<validateUser>
<username/>
<password/>
</validateUser>
</auth>
</amhAPI>
Из-за этого я должен добавить в набор проверок и проверок для полей, которые не должны быть пустыми, которые можно было бы удалить, если бы валидатор определил их как непустые элементы.
Есть ли способ форсировать непустой текст?