同じ質問に対する答えを探していました。あなたはおそらくすでに答えを見つけていますが、このスレッドにたどり着いた私のような他の人にとっては.
私が見ることができるものから、それは実装固有です。SAX には実際の仕様はないようです (仕様は Web サイト saxproject.org にあります)。少なくとも、isValidating が検証機能と同期しているはずの仕様または javadoc (見落としている可能性があります) の参照は見つかりませんでした。
public boolean isValidating()
Indicates if this SAXParserFactory is configured to produce parsers that validate
XML documents as they are parsed.
しかし、たとえば、Xerces の実装org.apache.xerces.jaxp.SAXParserFactoryImplisValidation
を見ると、検証機能に検証設定 ( , )が内部的に使用されていることがわかりますsetValidating
。
または、太陽の源を見ると
public void setValidating(boolean validating) {
putInFeatures(VALIDATION_FEATURE, validating);
}
(openjdk-6-src-b31-15_apr_2014 の例)
もう 1 つは、 Oracle XDKの oracle xmlparserv2 です。
これを証明するためのいくつかのサンプル テスト (Oracle xmlparserv2 jar が必要でありorg.apache.xerces.jaxp.SAXParserFactoryImpl
、Oracle jar がかなり優勢であるため、これだけの META-INF/services/javax.xml.parsers.SAXParserFactory ファイルも必要です)
public class SaxParserTest {
@Test
public void validationFeatureTestXerces() throws Exception {
SAXParserFactory parserFactory = org.apache.xerces.jaxp.SAXParserFactoryImpl.newInstance();
parserFactory.setFeature("http://xml.org/sax/features/validation", false);
Assert.assertFalse(parserFactory.isValidating());
parserFactory.setFeature("http://xml.org/sax/features/validation", true);
Assert.assertTrue(parserFactory.isValidating());
parserFactory.setValidating(true);
Assert.assertTrue(parserFactory.getFeature("http://xml.org/sax/features/validation"));
parserFactory.setValidating(false);
Assert.assertFalse(parserFactory.getFeature("http://xml.org/sax/features/validation"));
}
@Test
public void validationFeatureTestOracle() throws Exception {
SAXParserFactory parserFactory = oracle.xml.jaxp.JXSAXParserFactory.newInstance();
parserFactory.setFeature("http://xml.org/sax/features/validation", false);
Assert.assertFalse(parserFactory.isValidating());
parserFactory.setFeature("http://xml.org/sax/features/validation", true);
Assert.assertTrue(parserFactory.isValidating());
parserFactory.setValidating(true);
Assert.assertTrue(parserFactory.getFeature("http://xml.org/sax/features/validation"));
parserFactory.setValidating(false);
Assert.assertFalse(parserFactory.getFeature("http://xml.org/sax/features/validation"));
}
}