TestDefaultAttrs.java
package stax2.dtd;
import javax.xml.stream.XMLStreamException;
import org.codehaus.stax2.*;
import stax2.BaseStax2Test;
/**
* Test class that checks whether namespace declarations gained via
* attribute defaulting work.
*/
public class TestDefaultAttrs
extends BaseStax2Test
{
public void testValidNsFromDefaultAttrs()
throws XMLStreamException
{
final String XML =
"<!DOCTYPE node [\n"
+"<!ELEMENT node ANY>\n"
+"<!ATTLIST node attr1 CDATA #IMPLIED>\n"
+"<!ATTLIST node attr2 CDATA #FIXED 'abc'>\n"
+"<!ATTLIST node attr3 CDATA #FIXED '123'>\n"
+"]><node attr1='xyz' attr3='123' />"
;
XMLStreamReader2 sr = getReader(XML, true);
assertTokenType(DTD, sr.next());
assertTokenType(START_ELEMENT, sr.next());
assertEquals("node", sr.getLocalName());
assertEquals(3, sr.getAttributeCount());
assertEquals("xyz", sr.getAttributeValue("", "attr1"));
assertEquals("xyz", sr.getAttributeValue(null, "attr1"));
assertEquals("123", sr.getAttributeValue("", "attr3"));
assertEquals("123", sr.getAttributeValue(null, "attr3"));
assertEquals("abc", sr.getAttributeValue("", "attr2"));
assertEquals("abc", sr.getAttributeValue(null, "attr2"));
// and non existing...
assertNull(sr.getAttributeValue("http://foo", "attr1"));
}
/*
////////////////////////////////////////
// Private methods
////////////////////////////////////////
*/
private XMLStreamReader2 getReader(String contents, boolean nsAware)
throws XMLStreamException
{
XMLInputFactory2 f = getInputFactory();
setNamespaceAware(f, nsAware);
setSupportDTD(f, true);
setValidating(f, true);
return constructStreamReader(f, contents);
}
}