2010-06-23 10 views
5

मेरे पास एक प्रोजेक्ट है जो Velocity टेम्पलेट और जावा का उपयोग करके HTML पृष्ठों को उत्पन्न करता है। लेकिन अधिकांश पृष्ठ W3C मानकों का पालन नहीं करते हैं। मैं उन HTML पृष्ठों को कैसे सत्यापित कर सकता हूं और मुझे एक लॉग प्राप्त कर सकता हूं कि मुझे कौन से पृष्ठों पर त्रुटियां/चेतावनियां हैं?उस HTML मैचों को सत्यापित करने के लिए W3C मानकों

फिर मैं मैन्युअल रूप से त्रुटियों को ठीक कर सकता हूं। मैंने जेटीडीफिल्टर की कोशिश की है, लेकिन यह मेरे लिए काम नहीं करता है।

उत्तर

0

व्यापक अनुसंधान और एक छोटा सा कोड हैक करने के बाद, मैं अपने प्रोजेक्ट में JTidyFilter उपयोग करने के लिए प्रबंधित किया है, और यह खूबसूरती से अब काम कर रहा है। JTidyFilter JTidyServlet में है जो पांच साल पहले लिखित जेटीडी की उप-परियोजना है। हाल ही में उन्होंने जावा 5 कंपाइलर का अनुपालन करने के लिए कोड अपडेट किए हैं। मैंने अपने कोड डाउनलोड किए, कुछ निर्भरताओं को अपग्रेड किया और सबसे महत्वपूर्ण बात यह है कि जेटीडीफिल्टर क्लास में कुछ लाइनें बदलीं जो फ़िल्टर को संभालती है और आखिर में यह मेरी परियोजना में अच्छी तरह से काम करती है।

एचटीएमएल को दोबारा सुधारने में अभी भी कुछ समस्याएं हैं, क्योंकि जब मैं फ़ायरफ़ॉक्स एचटीएमएल सत्यापन प्लगइन का उपयोग करता हूं तो मुझे एक या दो त्रुटियां दिखाई दे सकती हैं, लेकिन अन्यथा अधिकांश पेज सत्यापन को पास करते हैं।

2

स्वचालित प्रमाणीकरण में सहायता के लिए डब्ल्यू 3 सी से उपलब्ध एक प्रयोगात्मक एपीआई भी उपलब्ध है। वे कृपया पूछते हैं कि आप अनुरोधों को थ्रॉटल करते हैं, और स्थानीय सर्वर पर एक सत्यापनकर्ता स्थापित करने के निर्देश भी प्रदान करते हैं। यह निश्चित रूप से अधिक काम है, लेकिन यदि आप बहुत सारे HTML पेज उत्पन्न कर रहे हैं, तो शायद यह सत्यापन को स्वचालित करने के लिए भी समझ में आ जाएगा।

http://validator.w3.org/docs/api.html

+1

मुझे आश्चर्य है कि जावा के लिए कोई एपीआई नहीं है। इसके अलावा मैं एपीआई जोड़ने के लिए वास्तव में अपने स्रोत कोड को संशोधित नहीं करना चाहता हूं। मैं बस इतना करना चाहता हूं कि मेरी जे 2 ईई परियोजना में कॉन्फ़िगरेशन फ़ाइल को बदलना है ताकि मैं इसे विकास के समय चालू कर सकूं और जब मैं नहीं करूँ तो इसे बंद कर दूं। जरूरत है। – newguy

+0

अन्य उत्तरों में जावा समाधान देखें –

5

आप सीधे जावा से W3C सत्यापनकर्ता का उपयोग कर सकते हैं, w3c-jabi देखें।

0

पर सरकारी एपीआई के बाद से 2007.

मार्कअप सत्यापनकर्ता वेब सेवा एपीआई के माध्यम से एक स्थानीय या दूरदराज के W3C परीक्षक कॉल करने के लिए अनुमति देता है

में एसओएपी प्रतिक्रिया में पढ़ने के लिए जर्सी और मोक्सी-जैक्सबी का उपयोग करके एक एकल जावा क्लास समाधान है।

इस

Maven निर्भरता है इसका इस्तेमाल करने की:

<dependency> 
    <groupId>com.bitplan</groupId> 
    <artifactId>w3cValidator</artifactId> 
    <version>0.0.2</version> 
</dependency> 

यहाँ यह कोशिश कर के लिए एक JUnit टेस्ट है:

/** 
* the URL of the official W3C Markup Validation service 
* if you'd like to run the tests against your own installation you might want to modify this 
*/ 
public static final String url="http://validator.w3.org/check"; 

/** 
* test the w3cValidator interface with some html code 
* @throws Exception 
*/ 
@Test 
public void testW3CValidator() throws Exception { 
    String preamble="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n" + 
      " \"http://www.w3.org/TR/html4/loose.dtd\">\n"+ 
      "<html>\n"+ 
      " <head>\n"+ 
      " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"+ 
      " <title>test</title>\n"+ 
      " </head>\n"+ 
      " <body>\n"; 
    String footer=" </body>\n"+ 
      "</html>\n"; 
    String[] htmls = { 
      preamble+ 
      " <div>\n"+ 
      footer, 
      "<!DOCTYPE html><html><head><title>test W3CChecker</title></head><body><div></body></html>" 
    }; 
    int[] expectedErrs={1,2}; 
    int[] expectedWarnings={1,2}; 
    int index=0; 
    System.out.println("Testing "+htmls.length+" html messages via "+url); 
    for (String html : htmls) { 
     W3CValidator checkResult = W3CValidator.check(url, html); 
     List<ValidationError> errlist = checkResult.body.response.errors.errorlist; 
     List<ValidationWarning> warnlist = checkResult.body.response.warnings.warninglist; 
     Object first = errlist.get(0); 
     assertTrue("if first is a string, than moxy is not activated",first instanceof ValidationError); 
     //System.out.println(first.getClass().getName()); 
     //System.out.println(first); 
     System.out.println("Validation result for test "+(index+1)+":"); 
     for (ValidationError err:errlist) { 
      System.out.println("\t"+err.toString()); 
     } 
     for (ValidationWarning warn:warnlist) { 
      System.out.println("\t"+warn.toString()); 
     } 
     System.out.println(); 
     assertTrue(errlist.size()>=expectedErrs[index]); 
     assertTrue(warnlist.size()>=expectedWarnings[index]); 
     index++; 
    } 
} // testW3CValidator 

दिखाता है कि कैसे चलाने के लिए अपने उबंटू लिनक्स सिस्टम पर डब्ल्यू 3 सी वैधकर्ता पर।