About Name Directory Service (in English)

本文介绍名称目录服务,指出基于C/S的系统通常有客户端、服务器和名称目录服务三部分,服务器在名称目录注册,客户端定位服务器。从中间件(COM+、CORBA、EJB等)和网络(Socket)方面列举场景,还提及名称注册与解析相关内容。

About Name Directory Service

This article is contributed by Wang HaiLong.

Introduction

It seems that all the C/S based systems have similar architectures and work according to similar rules:

1. There are usually 3 parts - client, server, name directory service.

2. Server registers itself in a name directory.

3. Client locates server in a name directory.

 

This article lists such scenarios from aspects of Middle Ware and Network.

Middle Ware

COM+

A component registers itself in the registry table, while clients locate it from registry table.

An active component registers itself with a Moniker in ROT (Running Object Table), while a client uses the Moniker to find the active component from ROT.

CORBA

Clients can ask services from Interface Repository.

 

The following code is extracted from <<Core Java 2 Volume II: Advanced Features>>.

ORB orb = ORB.init(args, NULL);

String [] Services = orb.list_initial_services();

org.omg.CORBA.Object object = orb.resolve_initial_references("NameService");

NamingContext namingContext = NamingContexthelper.narrow(objcet);

EJB

JNDI.

rmiregistry for RMI.

The following code is extracted from <<Core Java 2 Volume II: Advanced Features>>.

String url = getCodeBase().getHost();

url = "rmi://" + url;

centralWarehouse = (Warehouse)Naming.lookup(url + "/central_warehouse");

Network

Socket

A server needs to bind itself to port number before a client can connect it.

Name Registration and Resolution

Network programming concerns Address Families, Name Registration and Resolution.

The following table is from << Network Programming for Microsoft Windows >>.

Name Space Description Type

NS_SAP Service Advertising Protocol (SAP) name space; used on IPX networks Dynamic

NS_NDS NetWare Directory Services (NDS) name space; also used on IPX networks Persistent

NS_DNS Domain Name System (DNS) name space; most commonly found on TCP/IP networks and on the Internet Static

ND_NTDS Windows NT domain space; protocol-independent name space found on Windows 2000

Reference

<<Core Java 2 Volume II: Advanced Features>>

<<Network Programming for Microsoft Windows>>

 

line 5 column 1 - Warning: inserting implicit <body> line 7 column 64 - Warning: unescaped & or unknown entity "&oid" line 7 column 81 - Warning: unescaped & or unknown entity "&t" line 5 column 1 - Warning: inserting missing 'title' element line 7 column 1 - Warning: <form> illegal characters found in URI line 39 column 5 - Warning: <td> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 8 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting implicit <body> line 7 column 141 - Warning: '<' + '/' + letter not allowed here line 11 column 123 - Warning: '<' + '/' + letter not allowed here line 1 column 1 - Warning: inserting missing 'title' element line 1 column 106 - Warning: <a> proprietary attribute "hret" Info: Document content looks like HTML5 Tidy found 6 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 19 column 5 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 19 column 5 - Warning: inserting implicit <body> line 35 column 1 - Warning: </head> isn't allowed in <body> elements line 19 column 5 - Info: <body> previously mentioned line 37 column 1 - Warning: discarding unexpected <body> line 45 column 5 - Warning: <div> isn't allowed in <h1> elements line 41 column 1 - Info: <h1> previously mentioned line 45 column 29 - Warning: discarding unexpected </div> line 136 column 17 - Warning: discarding unexpected plain text line 136 column 17 - Warning: <option> attribute "{if" lacks value line 136 column 17 - Warning: <option> attribute "$bonustype" lacks value line 136 column 17 - Warning: <option> attribute "$child.type_id}selected{/if}" lacks value line 140 column 5 - Warning: discarding unexpected plain text line 156 column 17 - Warning: discarding unexpected plain text line 156 column 17 - Warning: <option> attribute "{if" lacks value line 156 column 17 - Warning: <option> attribute "$bonustype2" lacks value line 156 column 17 - Warning: <option> attribute "$child.type_id}selected{/if}" lacks value line 160 column 5 - Warning: discarding unexpected plain text line 53 column 1 - Warning: <script> illegal characters found in URI line 83 column 3 - Warning: <table> lacks "summary" attribute line 45 column 5 - Warning: trimming empty <h1> line 136 column 17 - Warning: <option> proprietary attribute "eq" line 156 column 17 - Warning: <option> proprietary attribute "eq" Info: Doctype given is "-//W3C//DTD XHTML 1.0 Transitional//EN" Info: Document content looks like XHTML 1.0 Transitional Tidy found 21 warnings and 0 errors! The table summary attribute should be used to describe the table structure. It is very helpful for people using non-visual browsers. The scope and headers attributes for table cells are useful for specifying which headers apply to each table cell, enabling non-visual browsers to provide a meaningful context for each cell. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. One or more empty elements were present in the source document but dropped on output. If these elements are necessary or you don't want this behavior, then consider setting the option "drop-empty-elements" to no. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 3 column 1 - Warning: missing <!DOCTYPE> declaration line 3 column 1 - Warning: plain text isn't allowed in <head> elements line 3 column 1 - Info: <head> previously mentioned line 3 column 1 - Warning: inserting implicit <body> line 25 column 17 - Warning: discarding unexpected plain text line 29 column 9 - Warning: discarding unexpected plain text line 41 column 1 - Warning: <form> shouldn't be nested line 77 column 3 - Warning: plain text isn't allowed in <table> elements line 47 column 1 - Info: <table> previously mentioned line 107 column 61 - Warning: unescaped & or unknown entity "&id" line 113 column 44 - Warning: unescaped & or unknown entity "&fake_id" line 113 column 105 - Warning: unescaped & or unknown entity "&fake_id" line 121 column 3 - Warning: plain text isn't allowed in <table> elements line 47 column 1 - Info: <table> previously mentioned line 125 column 3 - Warning: plain text isn't allowed in <table> elements line 47 column 1 - Info: <table> previously mentioned line 37 column 1 - Warning: missing </form> line 3 column 1 - Warning: inserting missing 'title' element line 107 column 34 - Warning: <a> illegal characters found in URI line 113 column 13 - Warning: <a> illegal characters found in URI line 113 column 77 - Warning: <a> illegal characters found in URI line 131 column 7 - Warning: <td> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 18 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 5 column 1 - Warning: missing <!DOCTYPE> declaration line 5 column 1 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 5 column 1 - Warning: inserting implicit <body> line 9 column 40 - Warning: unescaped & or unknown entity "&t" line 39 column 3 - Warning: plain text isn't allowed in <table> elements line 19 column 1 - Info: <table> previously mentioned line 57 column 43 - Warning: unescaped & or unknown entity "&id" line 58 column 35 - Warning: unescaped & or unknown entity "&id" line 65 column 3 - Warning: plain text isn't allowed in <table> elements line 19 column 1 - Info: <table> previously mentioned line 5 column 1 - Warning: inserting missing 'title' element line 57 column 13 - Warning: <a> illegal characters found in URI line 58 column 5 - Warning: <a> illegal characters found in URI Info: Document content looks like HTML5 Tidy found 11 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 14 column 4 - Warning: plain text isn't allowed in <table> elements line 4 column 1 - Info: <table> previously mentioned line 20 column 44 - Warning: unescaped & or unknown entity "&lid" line 23 column 3 - Warning: plain text isn't allowed in <table> elements line 4 column 1 - Info: <table> previously mentioned line 23 column 54 - Warning: unescaped & or unknown entity "&aid" line 24 column 3 - Warning: plain text isn't allowed in <table> elements line 4 column 1 - Info: <table> previously mentioned line 1 column 1 - Warning: inserting missing 'title' element line 20 column 13 - Warning: <a> illegal characters found in URI line 23 column 23 - Warning: <a> illegal characters found in URI line 14 column 4 - Warning: <tr> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 12 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 5 column 1 - Warning: missing <!DOCTYPE> declaration line 5 column 1 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 5 column 1 - Warning: inserting implicit <body> line 25 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 29 column 54 - Warning: unescaped & or unknown entity "&oid" line 37 column 46 - Warning: unescaped & or unknown entity "&oid" line 37 column 62 - Warning: unescaped & or unknown entity "&t" line 38 column 38 - Warning: unescaped & or unknown entity "&oid" line 38 column 54 - Warning: unescaped & or unknown entity "&t" line 46 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 50 column 1 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 5 column 1 - Warning: inserting missing 'title' element line 37 column 17 - Warning: <a> illegal characters found in URI line 38 column 9 - Warning: <a> illegal characters found in URI Info: Document content looks like HTML5 Tidy found 14 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 5 column 1 - Warning: missing <!DOCTYPE> declaration line 5 column 1 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 5 column 1 - Warning: inserting implicit <body> line 21 column 17 - Warning: <option> attribute "{if" lacks value line 21 column 17 - Warning: <option> attribute "$reg_type" lacks value line 21 column 17 - Warning: <option> attribute "1}selected{/if}" lacks value line 23 column 17 - Warning: <option> attribute "{if" lacks value line 23 column 17 - Warning: <option> attribute "$reg_type" lacks value line 23 column 17 - Warning: <option> attribute "2}selected{/if}" lacks value line 25 column 17 - Warning: <option> attribute "{if" lacks value line 25 column 17 - Warning: <option> attribute "$reg_type" lacks value line 25 column 17 - Warning: <option> attribute "3}selected{/if}" lacks value line 5 column 1 - Warning: inserting missing 'title' element line 43 column 5 - Warning: <td> attribute "align" not allowed for HTML5 line 21 column 17 - Warning: <option> proprietary attribute "eq" line 23 column 17 - Warning: <option> proprietary attribute "eq" line 25 column 17 - Warning: <option> proprietary attribute "eq" Info: Document content looks like HTML5 Tidy found 17 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 9 column 1 - Warning: missing <!DOCTYPE> declaration line 9 column 1 - Warning: plain text isn't allowed in <head> elements line 9 column 1 - Info: <head> previously mentioned line 9 column 1 - Warning: inserting implicit <body> line 15 column 17 - Warning: <option> attribute "{if" lacks value line 15 column 17 - Warning: <option> attribute "$type" lacks value line 15 column 17 - Warning: <option> attribute "1}selected{/if}" lacks value line 17 column 17 - Warning: <option> attribute "{if" lacks value line 17 column 17 - Warning: <option> attribute "$type" lacks value line 17 column 17 - Warning: <option> attribute "2}selected{/if}" lacks value line 19 column 17 - Warning: <option> attribute "{if" lacks value line 19 column 17 - Warning: <option> attribute "$type" lacks value line 19 column 17 - Warning: <option> attribute "3}selected{/if}" lacks value line 33 column 1 - Warning: <form> shouldn't be nested line 55 column 3 - Warning: plain text isn't allowed in <table> elements line 39 column 1 - Info: <table> previously mentioned line 61 column 62 - Warning: unescaped & or unknown entity "&goods_id" line 63 column 64 - Warning: unescaped & or unknown entity "&id" line 71 column 45 - Warning: unescaped & or unknown entity "&id" line 71 column 100 - Warning: unescaped & or unknown entity "&do" line 71 column 107 - Warning: unescaped & or unknown entity "&id" line 77 column 3 - Warning: plain text isn't allowed in <table> elements line 39 column 1 - Info: <table> previously mentioned line 81 column 3 - Warning: plain text isn't allowed in <table> elements line 39 column 1 - Info: <table> previously mentioned line 29 column 1 - Warning: missing </form> line 9 column 1 - Warning: inserting missing 'title' element line 61 column 35 - Warning: <a> illegal characters found in URI line 63 column 35 - Warning: <a> illegal characters found in URI line 69 column 13 - Warning: <a> illegal characters found in URI line 71 column 13 - Warning: <a> illegal characters found in URI line 71 column 68 - Warning: <a> illegal characters found in URI line 83 column 7 - Warning: <td> attribute "align" not allowed for HTML5 line 15 column 17 - Warning: <option> proprietary attribute "eq" line 17 column 17 - Warning: <option> proprietary attribute "eq" line 19 column 17 - Warning: <option> proprietary attribute "eq" Info: Document content looks like HTML5 Tidy found 32 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 10 column 5 - Warning: plain text isn't allowed in <head> elements line 3 column 1 - Info: <head> previously mentioned line 10 column 5 - Warning: inserting implicit <body> line 18 column 1 - Warning: </head> isn't allowed in <body> elements line 10 column 5 - Info: <body> previously mentioned line 19 column 1 - Warning: discarding unexpected <body> line 23 column 5 - Warning: <div> isn't allowed in <h1> elements line 21 column 1 - Info: <h1> previously mentioned line 23 column 29 - Warning: discarding unexpected </div> line 43 column 3 - Warning: plain text isn't allowed in <table> elements line 31 column 1 - Info: <table> previously mentioned line 55 column 45 - Warning: unescaped & or unknown entity "&id" line 58 column 3 - Warning: plain text isn't allowed in <table> elements line 31 column 1 - Info: <table> previously mentioned line 27 column 1 - Warning: <script> illegal characters found in URI line 31 column 1 - Warning: <table> lacks "summary" attribute line 36 column 19 - Warning: <img> lacks "alt" attribute line 55 column 13 - Warning: <a> illegal characters found in URI line 23 column 5 - Warning: trimming empty <h1> Info: Doctype given is "-//W3C//DTD XHTML 1.0 Transitional//EN" Info: Document content looks like XHTML 1.0 Transitional Tidy found 14 warnings and 0 errors! The table summary attribute should be used to describe the table structure. It is very helpful for people using non-visual browsers. The scope and headers attributes for table cells are useful for specifying which headers apply to each table cell, enabling non-visual browsers to provide a meaningful context for each cell. The alt attribute should be used to give a short description of an image; longer descriptions should be given with the longdesc attribute which takes a URL linked to the description. These measures are needed for people using non-graphical browsers. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. One or more empty elements were present in the source document but dropped on output. If these elements are necessary or you don't want this behavior, then consider setting the option "drop-empty-elements" to no. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 19 column 5 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 19 column 5 - Warning: inserting implicit <body> line 35 column 1 - Warning: </head> isn't allowed in <body> elements line 19 column 5 - Info: <body> previously mentioned line 37 column 1 - Warning: discarding unexpected <body> line 45 column 5 - Warning: <div> isn't allowed in <h1> elements line 41 column 1 - Info: <h1> previously mentioned line 45 column 29 - Warning: discarding unexpected </div> line 95 column 67 - Warning: unescaped & or unknown entity "&id" line 131 column 17 - Warning: <option> attribute "{if" lacks value line 131 column 17 - Warning: <option> attribute "$keywords.jf_type" lacks value line 131 column 17 - Warning: <option> attribute "1}selected{/if}" lacks value line 133 column 17 - Warning: <option> attribute "{if" lacks value line 133 column 17 - Warning: <option> attribute "$keywords.jf_type" lacks value line 133 column 17 - Warning: <option> attribute "2}selected{/if}" lacks value line 147 column 2 - Warning: missing <td> line 155 column 3 - Warning: missing <td> line 53 column 1 - Warning: <script> illegal characters found in URI line 95 column 1 - Warning: <form> illegal characters found in URI line 97 column 3 - Warning: <table> lacks "summary" attribute line 45 column 5 - Warning: trimming empty <h1> line 131 column 17 - Warning: <option> proprietary attribute "eq" line 133 column 17 - Warning: <option> proprietary attribute "eq" Info: Doctype given is "-//W3C//DTD XHTML 1.0 Transitional//EN" Info: Document content looks like XHTML 1.0 Transitional Tidy found 21 warnings and 0 errors! The table summary attribute should be used to describe the table structure. It is very helpful for people using non-visual browsers. The scope and headers attributes for table cells are useful for specifying which headers apply to each table cell, enabling non-visual browsers to provide a meaningful context for each cell. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. One or more empty elements were present in the source document but dropped on output. If these elements are necessary or you don't want this behavior, then consider setting the option "drop-empty-elements" to no. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 21 column 9 - Warning: missing </div> before <li> line 22 column 17 - Warning: inserting implicit <ul> line 22 column 17 - Warning: missing </ul> before </div> line 1 column 1 - Warning: inserting missing 'title' element line 17 column 34 - Warning: <img> illegal characters found in URI line 17 column 34 - Warning: <img> lacks "alt" attribute line 23 column 41 - Warning: <img> illegal characters found in URI line 23 column 41 - Warning: <img> proprietary attribute value "absmiddle" line 23 column 41 - Warning: <img> lacks "alt" attribute line 3 column 1 - Warning: moved <style> tag to <head>! fix-style-tags: no to avoid. line 23 column 41 - Warning: <img> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 14 warnings and 0 errors! The alt attribute should be used to give a short description of an image; longer descriptions should be given with the longdesc attribute which takes a URL linked to the description. These measures are needed for people using non-graphical browsers. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: <tr> attribute "{if" lacks value line 1 column 1 - Warning: <tr> attribute "$menu['type']" lacks value line 1 column 1 - Warning: <tr> attribute name "3}style" (value="display:none") is invalid line 1 column 1 - Warning: <tr> attribute "{/if}" lacks value line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting implicit <body> line 20 column 25 - Warning: <input> isn't allowed in <table> elements line 3 column 17 - Info: <table> previously mentioned line 21 column 25 - Warning: <input> isn't allowed in <table> elements line 3 column 17 - Info: <table> previously mentioned line 22 column 25 - Warning: <input> isn't allowed in <table> elements line 3 column 17 - Info: <table> previously mentioned line 1 column 1 - Warning: inserting missing 'title' element line 3 column 17 - Warning: <table> attribute "align" not allowed for HTML5 line 1 column 1 - Warning: <tr> proprietary attribute "neq" Info: Document content looks like HTML5 Tidy found 12 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 6 column 67 - Warning: unescaped & or unknown entity "&aid" line 19 column 9 - Warning: <input> attribute "{if" lacks value line 19 column 9 - Warning: <input> attribute "$act.isopen" lacks value line 19 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 20 column 9 - Warning: <input> attribute "{if" lacks value line 20 column 9 - Warning: <input> attribute "$act.isopen" lacks value line 20 column 9 - Warning: <input> attribute "0}checked{/if}" lacks value line 28 column 9 - Warning: <input> attribute "{if" lacks value line 28 column 9 - Warning: <input> attribute "$act.type" lacks value line 28 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 29 column 9 - Warning: <input> attribute "{if" lacks value line 29 column 9 - Warning: <input> attribute "$act.type" lacks value line 29 column 9 - Warning: <input> attribute "2}checked{/if}" lacks value line 32 column 3 - Warning: plain text isn't allowed in <tbody> elements line 8 column 3 - Info: <tbody> previously mentioned line 37 column 5 - Warning: plain text isn't allowed in <tbody> elements line 8 column 3 - Info: <tbody> previously mentioned line 40 column 9 - Warning: <input> attribute "{if" lacks value line 40 column 9 - Warning: <input> attribute "$act.tpl" lacks value line 40 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 41 column 9 - Warning: <input> attribute "{if" lacks value line 41 column 9 - Warning: <input> attribute "$act.tpl" lacks value line 41 column 9 - Warning: <input> attribute "2}checked{/if}" lacks value line 42 column 9 - Warning: <input> attribute "{if" lacks value line 42 column 9 - Warning: <input> attribute "$act.tpl" lacks value line 42 column 9 - Warning: <input> attribute "3}checked{/if}" lacks value line 1 column 1 - Warning: inserting missing 'title' element line 6 column 1 - Warning: <form> illegal characters found in URI line 55 column 5 - Warning: <td> attribute "align" not allowed for HTML5 line 19 column 9 - Warning: <input> proprietary attribute "eq" line 20 column 9 - Warning: <input> proprietary attribute "eq" line 28 column 9 - Warning: <input> proprietary attribute "eq" line 29 column 9 - Warning: <input> proprietary attribute "eq" line 40 column 9 - Warning: <input> proprietary attribute "eq" line 41 column 9 - Warning: <input> proprietary attribute "eq" line 42 column 9 - Warning: <input> proprietary attribute "eq" Info: Document content looks like HTML5 Tidy found 37 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 5 column 1 - Warning: missing <!DOCTYPE> declaration line 5 column 1 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 5 column 1 - Warning: inserting implicit <body> line 49 column 5 - Warning: plain text isn't allowed in <table> elements line 45 column 3 - Info: <table> previously mentioned line 63 column 3 - Warning: plain text isn't allowed in <table> elements line 45 column 3 - Info: <table> previously mentioned line 67 column 3 - Warning: plain text isn't allowed in <table> elements line 45 column 3 - Info: <table> previously mentioned line 5 column 1 - Warning: inserting missing 'title' element line 9 column 1 - Warning: <table> attribute "align" not allowed for HTML5 line 57 column 11 - Warning: <hr> proprietary attribute "color" Info: Document content looks like HTML5 Tidy found 9 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 19 column 5 - Warning: plain text isn't allowed in <head> elements line 5 column 1 - Info: <head> previously mentioned line 19 column 5 - Warning: inserting implicit <body> line 35 column 1 - Warning: </head> isn't allowed in <body> elements line 19 column 5 - Info: <body> previously mentioned line 37 column 1 - Warning: discarding unexpected <body> line 57 column 5 - Warning: <div> isn't allowed in <h1> elements line 41 column 1 - Info: <h1> previously mentioned line 57 column 29 - Warning: discarding unexpected </div> line 95 column 66 - Warning: unescaped & or unknown entity "&id" line 111 column 17 - Warning: discarding unexpected plain text line 111 column 17 - Warning: <option> attribute "{if" lacks value line 111 column 17 - Warning: <option> attribute "$menu.pid" lacks value line 111 column 17 - Warning: <option> attribute "$child.id}selected{/if}" lacks value line 115 column 5 - Warning: discarding unexpected plain text line 135 column 9 - Warning: <input> attribute "{if" lacks value line 135 column 9 - Warning: <input> attribute "$menu.type" lacks value line 135 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 137 column 9 - Warning: <input> attribute "{if" lacks value line 137 column 9 - Warning: <input> attribute "$menu.type" lacks value line 137 column 9 - Warning: <input> attribute "2}checked{/if}" lacks value line 139 column 9 - Warning: <input> attribute "{if" lacks value line 139 column 9 - Warning: <input> attribute "$menu.type" lacks value line 139 column 9 - Warning: <input> attribute "3}checked{/if}" lacks value line 147 column 2 - Warning: plain text isn't allowed in <tbody> elements line 99 column 3 - Info: <tbody> previously mentioned line 147 column 2 - Warning: <tr> attribute "{if" lacks value line 147 column 2 - Warning: <tr> attribute "$menu['type']" lacks value line 147 column 2 - Warning: <tr> attribute name "3}style" (value="display:none") is invalid line 147 column 2 - Warning: <tr> attribute "{/if}" lacks value line 45 column 31 - Warning: <a> illegal characters found in URI line 51 column 31 - Warning: <a> illegal characters found in URI line 65 column 1 - Warning: <script> illegal characters found in URI line 95 column 1 - Warning: <form> illegal characters found in URI line 97 column 3 - Warning: <table> lacks "summary" attribute line 57 column 5 - Warning: trimming empty <h1> line 111 column 17 - Warning: <option> proprietary attribute "eq" line 135 column 9 - Warning: <input> proprietary attribute "eq" line 137 column 9 - Warning: <input> proprietary attribute "eq" line 139 column 9 - Warning: <input> proprietary attribute "eq" line 147 column 2 - Warning: <tr> proprietary attribute "eq" Info: Doctype given is "-//W3C//DTD XHTML 1.0 Transitional//EN" Info: Document content looks like XHTML 1.0 Transitional Tidy found 37 warnings and 0 errors! The table summary attribute should be used to describe the table structure. It is very helpful for people using non-visual browsers. The scope and headers attributes for table cells are useful for specifying which headers apply to each table cell, enabling non-visual browsers to provide a meaningful context for each cell. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. One or more empty elements were present in the source document but dropped on output. If these elements are necessary or you don't want this behavior, then consider setting the option "drop-empty-elements" to no. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 7 column 1 - Warning: missing <!DOCTYPE> declaration line 7 column 1 - Warning: plain text isn't allowed in <head> elements line 7 column 1 - Info: <head> previously mentioned line 7 column 1 - Warning: inserting implicit <body> line 17 column 9 - Warning: <input> attribute "{if" lacks value line 17 column 9 - Warning: <input> attribute "$buynotice" lacks value line 17 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 17 column 93 - Warning: <input> attribute "{if" lacks value line 17 column 93 - Warning: <input> attribute "$buynotice" lacks value line 17 column 93 - Warning: <input> attribute "0}checked{/if}" lacks value line 33 column 9 - Warning: <input> attribute "{if" lacks value line 33 column 9 - Warning: <input> attribute "$sendnotice" lacks value line 33 column 9 - Warning: <input> attribute "1}checked{/if}" lacks value line 33 column 95 - Warning: <input> attribute "{if" lacks value line 33 column 95 - Warning: <input> attribute "$sendnotice" lacks value line 33 column 95 - Warning: <input> attribute "0}checked{/if}" lacks value line 7 column 1 - Warning: inserting missing 'title' element line 47 column 5 - Warning: <td> attribute "align" not allowed for HTML5 line 17 column 9 - Warning: <input> proprietary attribute "eq" line 17 column 93 - Warning: <input> proprietary attribute "eq" line 33 column 9 - Warning: <input> proprietary attribute "eq" line 33 column 95 - Warning: <input> proprietary attribute "eq" Info: Document content looks like HTML5 Tidy found 21 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 2 column 1 - Error: <alipay> is not recognized! line 2 column 1 - Warning: missing <!DOCTYPE> declaration line 2 column 1 - Warning: discarding unexpected <alipay> line 3 column 6 - Error: <merchant_pid> is not recognized! line 3 column 6 - Warning: discarding unexpected <merchant_pid> line 3 column 20 - Warning: plain text isn't allowed in <head> elements line 2 column 1 - Info: <head> previously mentioned line 3 column 20 - Warning: inserting implicit <body> line 3 column 36 - Warning: discarding unexpected </merchant_pid> line 4 column 6 - Error: <merchant_name> is not recognized! line 4 column 6 - Warning: discarding unexpected <merchant_name> line 4 column 29 - Warning: discarding unexpected </merchant_name> line 5 column 6 - Error: <system_name> is not recognized! line 5 column 6 - Warning: discarding unexpected <system_name> line 5 column 27 - Warning: discarding unexpected </system_name> line 6 column 6 - Error: <system_version> is not recognized! line 6 column 6 - Warning: discarding unexpected <system_version> line 6 column 27 - Warning: discarding unexpected </system_version> line 7 column 1 - Warning: discarding unexpected </alipay> line 2 column 1 - Warning: inserting missing 'title' element line 1 column 1 - Warning: An XML declaration was detected. Did you mean to use input-xml? Info: Document content looks like HTML5 Tidy found 15 warnings and 5 errors! This document has errors that must be fixed before using HTML Tidy to generate a tidied up version. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting missing 'title' element Info: Document content looks like HTML5 Tidy found 2 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 10 column 61 - Warning: unescaped & or unknown entity "&id" line 10 column 70 - Warning: unescaped & or unknown entity "&do" line 10 column 75 - Warning: unescaped & or unknown entity "&istitle" line 10 column 94 - Warning: unescaped & or unknown entity "&iscomment" line 1 column 1 - Warning: inserting missing 'title' element line 10 column 23 - Warning: <a> illegal characters found in URI line 26 column 17 - Warning: <img> illegal characters found in URI line 26 column 17 - Warning: <img> lacks "alt" attribute line 21 column 9 - Warning: <table> attribute "align" not allowed for HTML5 line 32 column 17 - Warning: <table> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 13 warnings and 0 errors! The alt attribute should be used to give a short description of an image; longer descriptions should be given with the longdesc attribute which takes a URL linked to the description. These measures are needed for people using non-graphical browsers. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 2 column 1 - Warning: missing <!DOCTYPE> declaration line 2 column 1 - Warning: plain text isn't allowed in <head> elements line 2 column 1 - Info: <head> previously mentioned line 2 column 1 - Warning: inserting implicit <body> line 15 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 17 column 271 - Warning: <span> attribute "{if" lacks value line 17 column 271 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 17 column 271 - Warning: <span> attribute "{else}" lacks value line 17 column 271 - Warning: <span> attribute "{/if}" lacks value line 18 column 271 - Warning: <span> attribute "{if" lacks value line 18 column 271 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 18 column 271 - Warning: <span> attribute "{else}" lacks value line 18 column 271 - Warning: <span> attribute "{/if}" lacks value line 19 column 271 - Warning: <span> attribute "{if" lacks value line 19 column 271 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 19 column 271 - Warning: <span> attribute "{else}" lacks value line 19 column 271 - Warning: <span> attribute "{/if}" lacks value line 23 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 26 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 2 column 1 - Warning: inserting missing 'title' element line 16 column 5 - Warning: <td> attribute "width" has invalid value "250px" line 17 column 177 - Warning: <a> illegal characters found in URI line 18 column 177 - Warning: <a> illegal characters found in URI line 19 column 177 - Warning: <a> illegal characters found in URI Info: Document content looks like HTML5 Tidy found 23 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 28 column 3 - Warning: <input> isn't allowed in <tr> elements line 27 column 3 - Info: <tr> previously mentioned line 1 column 1 - Warning: inserting missing 'title' element line 29 column 5 - Warning: <td> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 6 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting missing 'title' element Info: Document content looks like HTML5 Tidy found 2 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 4 column 1 - Warning: <center> element removed from HTML5 line 5 column 5 - Warning: <center> element removed from HTML5 Info: Document content looks like HTML5 Tidy found 3 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting missing 'title' element Info: Document content looks like HTML5 Tidy found 2 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 10 column 61 - Warning: unescaped & or unknown entity "&id" line 10 column 70 - Warning: unescaped & or unknown entity "&do" line 10 column 75 - Warning: unescaped & or unknown entity "&istitle" line 10 column 94 - Warning: unescaped & or unknown entity "&iscomment" line 1 column 1 - Warning: inserting missing 'title' element line 10 column 23 - Warning: <a> illegal characters found in URI line 26 column 17 - Warning: <img> illegal characters found in URI line 26 column 17 - Warning: <img> lacks "alt" attribute line 21 column 9 - Warning: <table> attribute "align" not allowed for HTML5 line 32 column 17 - Warning: <table> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 13 warnings and 0 errors! The alt attribute should be used to give a short description of an image; longer descriptions should be given with the longdesc attribute which takes a URL linked to the description. These measures are needed for people using non-graphical browsers. For further advice on how to make your pages accessible see http://www.w3.org/WAI/GL. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 2 column 1 - Warning: missing <!DOCTYPE> declaration line 2 column 1 - Warning: plain text isn't allowed in <head> elements line 2 column 1 - Info: <head> previously mentioned line 2 column 1 - Warning: inserting implicit <body> line 15 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 17 column 286 - Warning: <span> attribute "{if" lacks value line 17 column 286 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 17 column 286 - Warning: <span> attribute "{else}" lacks value line 17 column 286 - Warning: <span> attribute "{/if}" lacks value line 18 column 286 - Warning: <span> attribute "{if" lacks value line 18 column 286 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 18 column 286 - Warning: <span> attribute "{else}" lacks value line 18 column 286 - Warning: <span> attribute "{/if}" lacks value line 19 column 286 - Warning: <span> attribute "{if" lacks value line 19 column 286 - Warning: <span> attribute name "$help_open}style" (value="display:block") is invalid line 19 column 286 - Warning: <span> attribute "{else}" lacks value line 19 column 286 - Warning: <span> attribute "{/if}" lacks value line 23 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 26 column 3 - Warning: plain text isn't allowed in <table> elements line 7 column 1 - Info: <table> previously mentioned line 2 column 1 - Warning: inserting missing 'title' element line 16 column 5 - Warning: <td> attribute "width" has invalid value "250px" line 17 column 192 - Warning: <a> illegal characters found in URI line 18 column 192 - Warning: <a> illegal characters found in URI line 19 column 192 - Warning: <a> illegal characters found in URI line 17 column 5 - Warning: <td> attribute "align" not allowed for HTML5 line 18 column 5 - Warning: <td> attribute "align" not allowed for HTML5 line 19 column 5 - Warning: <td> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 26 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 1 - Info: <head> previously mentioned line 1 column 1 - Warning: inserting implicit <body> line 28 column 3 - Warning: <input> isn't allowed in <tr> elements line 27 column 3 - Info: <tr> previously mentioned line 1 column 1 - Warning: inserting missing 'title' element line 29 column 5 - Warning: <td> attribute "align" not allowed for HTML5 Info: Document content looks like HTML5 Tidy found 6 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: inserting missing 'title' element Info: Document content looks like HTML5 Tidy found 2 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration Info: Document content looks like HTML5 Tidy found 1 warning and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 12 column 1 - Warning: discarding unexpected </body> line 14 column 1 - Warning: discarding unexpected </html> line 3 column 1 - Warning: inserting missing 'title' element Info: Document content looks like HTML5 Tidy found 4 warnings and 0 errors! About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md Info: Document content looks like HTML5 No warnings or errors were found. About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments: https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/ Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents: http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md [root@yfw yfw.szrengjing.com]# php7.4 yfw.szrengjing.com 前端清还是打不开
11-09
#!/usr/bin/env python # Copyright 2022 The HuggingFace Team All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # /// script # dependencies = [ # "transformers @ git+https://github.com/huggingface/transformers.git", # "torch>=1.5.0", # "torchvision>=0.6.0", # "datasets>=1.8.0", # ] # /// """ Training a CLIP like dual encoder models using text and vision encoders in the library. The script can be used to train CLIP like models for languages other than English by using a text encoder pre-trained in the desired language. Currently this script supports the following vision and text models: Vision models: ViT(https://huggingface.co/models?filter=vit), CLIP (https://huggingface.co/models?filter=clip) Text models: BERT, ROBERTa (https://huggingface.co/models?filter=fill-mask) """ import logging import os import sys from dataclasses import dataclass, field from typing import Optional import torch from datasets import load_dataset from PIL import Image from torchvision.io import ImageReadMode, read_image from torchvision.transforms import CenterCrop, ConvertImageDtype, Normalize, Resize from torchvision.transforms.functional import InterpolationMode import transformers from transformers import ( AutoImageProcessor, AutoModel, AutoTokenizer, HfArgumentParser, Trainer, TrainingArguments, set_seed, ) from transformers.utils import check_min_version from transformers.utils.versions import require_version logger = logging.getLogger(__name__) # Will error if the minimal version of Transformers is not installed. Remove at your own risks. check_min_version("4.57.0.dev0") require_version("datasets>=1.8.0", "To fix: pip install -r examples/pytorch/contrastive-image-text/requirements.txt") @dataclass class ModelArguments: """ Arguments pertaining to which model/config/tokenizer we are going to fine-tune, or train from scratch. """ model_name_or_path: str = field( metadata={"help": "Path to pretrained model or model identifier from huggingface.co/models"}, ) config_name: Optional[str] = field( default=None, metadata={"help": "Pretrained config name or path if not the same as model_name"} ) tokenizer_name: Optional[str] = field( default=None, metadata={"help": "Pretrained tokenizer name or path if not the same as model_name"} ) image_processor_name: str = field(default=None, metadata={"help": "Name or path of preprocessor config."}) cache_dir: Optional[str] = field( default=None, metadata={"help": "Where do you want to store the pretrained models downloaded from s3"} ) model_revision: str = field( default="main", metadata={"help": "The specific model version to use (can be a branch name, tag name or commit id)."}, ) use_fast_tokenizer: bool = field( default=True, metadata={"help": "Whether to use one of the fast tokenizer (backed by the tokenizers library) or not."}, ) token: str = field( default=None, metadata={ "help": ( "The token to use as HTTP bearer authorization for remote files. If not specified, will use the token " "generated when running `hf auth login` (stored in `~/.huggingface`)." ) }, ) trust_remote_code: bool = field( default=False, metadata={ "help": ( "Whether to trust the execution of code from datasets/models defined on the Hub." " This option should only be set to `True` for repositories you trust and in which you have read the" " code, as it will execute code present on the Hub on your local machine." ) }, ) freeze_vision_model: bool = field( default=False, metadata={"help": "Whether to freeze the vision model parameters or not."} ) freeze_text_model: bool = field( default=False, metadata={"help": "Whether to freeze the text model parameters or not."} ) @dataclass class DataTrainingArguments: """ Arguments pertaining to what data we are going to input our model for training and eval. """ dataset_name: Optional[str] = field( default=None, metadata={"help": "The name of the dataset to use (via the datasets library)."} ) dataset_config_name: Optional[str] = field( default=None, metadata={"help": "The configuration name of the dataset to use (via the datasets library)."} ) data_dir: Optional[str] = field(default=None, metadata={"help": "The data directory containing input files."}) image_column: Optional[str] = field( default="image_path", metadata={"help": "The name of the column in the datasets containing the full image file paths."}, ) caption_column: Optional[str] = field( default="caption", metadata={"help": "The name of the column in the datasets containing the image captions."}, ) train_file: Optional[str] = field( default=None, metadata={"help": "The input training data file (a jsonlines file)."} ) validation_file: Optional[str] = field( default=None, metadata={"help": "An optional input evaluation data file (a jsonlines file)."}, ) max_seq_length: Optional[int] = field( default=128, metadata={ "help": ( "The maximum total input sequence length after tokenization. Sequences longer " "than this will be truncated, sequences shorter will be padded." ) }, ) max_train_samples: Optional[int] = field( default=None, metadata={ "help": ( "For debugging purposes or quicker training, truncate the number of training examples to this " "value if set." ) }, ) max_eval_samples: Optional[int] = field( default=None, metadata={ "help": ( "For debugging purposes or quicker training, truncate the number of evaluation examples to this " "value if set." ) }, ) overwrite_cache: bool = field( default=False, metadata={"help": "Overwrite the cached training and evaluation sets"} ) preprocessing_num_workers: Optional[int] = field( default=None, metadata={"help": "The number of processes to use for the preprocessing."}, ) def __post_init__(self): if self.dataset_name is None and self.train_file is None and self.validation_file is None: raise ValueError("Need either a dataset name or a training/validation file.") else: if self.train_file is not None: extension = self.train_file.split(".")[-1] assert extension in ["csv", "json"], "`train_file` should be a csv or a json file." if self.validation_file is not None: extension = self.validation_file.split(".")[-1] assert extension in ["csv", "json"], "`validation_file` should be a csv or a json file." dataset_name_mapping = { "image_caption_dataset.py": ("image_path", "caption"), } # We use torchvision for faster image pre-processing. The transforms are implemented as nn.Module, # so we jit it to be faster. class Transform(torch.nn.Module): def __init__(self, image_size, mean, std): super().__init__() self.transforms = torch.nn.Sequential( Resize([image_size], interpolation=InterpolationMode.BICUBIC), CenterCrop(image_size), ConvertImageDtype(torch.float), Normalize(mean, std), ) def forward(self, x) -> torch.Tensor: """`x` should be an instance of `PIL.Image.Image`""" with torch.no_grad(): x = self.transforms(x) return x def collate_fn(examples): pixel_values = torch.stack([example["pixel_values"] for example in examples]) input_ids = torch.tensor([example["input_ids"] for example in examples], dtype=torch.long) attention_mask = torch.tensor([example["attention_mask"] for example in examples], dtype=torch.long) return { "pixel_values": pixel_values, "input_ids": input_ids, "attention_mask": attention_mask, "return_loss": True, } def main(): # 1. Parse input arguments # See all possible arguments in src/transformers/training_args.py # or by passing the --help flag to this script. # We now keep distinct sets of args, for a cleaner separation of concerns. parser = HfArgumentParser((ModelArguments, DataTrainingArguments, TrainingArguments)) if len(sys.argv) == 2 and sys.argv[1].endswith(".json"): # If we pass only one argument to the script and it's the path to a json file, # let's parse it to get our arguments. model_args, data_args, training_args = parser.parse_json_file(json_file=os.path.abspath(sys.argv[1])) else: model_args, data_args, training_args = parser.parse_args_into_dataclasses() # 2. Setup logging logging.basicConfig( format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", datefmt="%m/%d/%Y %H:%M:%S", handlers=[logging.StreamHandler(sys.stdout)], ) if training_args.should_log: # The default of training_args.log_level is passive, so we set log level at info here to have that default. transformers.utils.logging.set_verbosity_info() log_level = training_args.get_process_log_level() logger.setLevel(log_level) transformers.utils.logging.set_verbosity(log_level) transformers.utils.logging.enable_default_handler() transformers.utils.logging.enable_explicit_format() # Log on each process the small summary: logger.warning( f"Process rank: {training_args.local_process_index}, device: {training_args.device}, n_gpu: {training_args.n_gpu}, " + f"distributed training: {training_args.parallel_mode.value == 'distributed'}, 16-bits training: {training_args.fp16}" ) logger.info(f"Training/evaluation parameters {training_args}") # 4. Load dataset # Get the datasets: you can either provide your own CSV/JSON training and evaluation files (see below) # or just provide the name of one of the public datasets available on the hub at https://huggingface.co/datasets/ # (the dataset will be downloaded automatically from the datasets Hub). # # For CSV/JSON files this script will use the first column for the full image path and the second column for the # captions (unless you specify column names for this with the `image_column` and `caption_column` arguments). # if data_args.dataset_name is not None: # Downloading and loading a dataset from the hub. dataset = load_dataset( data_args.dataset_name, data_args.dataset_config_name, cache_dir=model_args.cache_dir, keep_in_memory=False, data_dir=data_args.data_dir, token=model_args.token, trust_remote_code=model_args.trust_remote_code, ) else: data_files = {} if data_args.train_file is not None: data_files["train"] = data_args.train_file extension = data_args.train_file.split(".")[-1] if data_args.validation_file is not None: data_files["validation"] = data_args.validation_file extension = data_args.validation_file.split(".")[-1] dataset = load_dataset( extension, data_files=data_files, cache_dir=model_args.cache_dir, token=model_args.token, ) # See more about loading any type of standard or custom dataset (from files, python dict, pandas DataFrame, etc) at # https://huggingface.co/docs/datasets/loading_datasets. # 5. Load pretrained model, tokenizer, and image processor if model_args.tokenizer_name: tokenizer = AutoTokenizer.from_pretrained( model_args.tokenizer_name, cache_dir=model_args.cache_dir, use_fast=model_args.use_fast_tokenizer, token=model_args.token, trust_remote_code=model_args.trust_remote_code, ) elif model_args.model_name_or_path: tokenizer = AutoTokenizer.from_pretrained( model_args.model_name_or_path, cache_dir=model_args.cache_dir, use_fast=model_args.use_fast_tokenizer, token=model_args.token, trust_remote_code=model_args.trust_remote_code, ) else: raise ValueError( "You are instantiating a new tokenizer from scratch. This is not supported by this script. " "You can do it from another script, save it, and load it from here, using --tokenizer_name." ) # Load image_processor, in this script we only use this to get the mean and std for normalization. image_processor = AutoImageProcessor.from_pretrained( model_args.image_processor_name or model_args.model_name_or_path, cache_dir=model_args.cache_dir, revision=model_args.model_revision, token=model_args.token, trust_remote_code=model_args.trust_remote_code, ) model = AutoModel.from_pretrained( model_args.model_name_or_path, cache_dir=model_args.cache_dir, revision=model_args.model_revision, token=model_args.token, trust_remote_code=model_args.trust_remote_code, ) config = model.config def _freeze_params(module): for param in module.parameters(): param.requires_grad = False if model_args.freeze_vision_model: _freeze_params(model.vision_model) if model_args.freeze_text_model: _freeze_params(model.text_model) # set seed for torch dataloaders set_seed(training_args.seed) # Preprocessing the datasets. # We need to tokenize inputs and targets. if training_args.do_train: column_names = dataset["train"].column_names elif training_args.do_eval: column_names = dataset["validation"].column_names else: logger.info("There is nothing to do. Please pass `do_train`, `do_eval` and/or `do_predict`.") return # 6. Get the column names for input/target. dataset_columns = dataset_name_mapping.get(data_args.dataset_name) if data_args.image_column is None: image_column = dataset_columns[0] if dataset_columns is not None else column_names[0] else: image_column = data_args.image_column if image_column not in column_names: raise ValueError( f"--image_column' value '{data_args.image_column}' needs to be one of: {', '.join(column_names)}" ) if data_args.caption_column is None: caption_column = dataset_columns[1] if dataset_columns is not None else column_names[1] else: caption_column = data_args.caption_column if caption_column not in column_names: raise ValueError( f"--caption_column' value '{data_args.caption_column}' needs to be one of: {', '.join(column_names)}" ) # 7. Preprocessing the datasets. # Initialize torchvision transforms and jit it for faster processing. image_transformations = Transform( config.vision_config.image_size, image_processor.image_mean, image_processor.image_std ) image_transformations = torch.jit.script(image_transformations) # Preprocessing the datasets. # We need to tokenize input captions and transform the images. def tokenize_captions(examples): captions = list(examples[caption_column]) text_inputs = tokenizer(captions, max_length=data_args.max_seq_length, padding="max_length", truncation=True) examples["input_ids"] = text_inputs.input_ids examples["attention_mask"] = text_inputs.attention_mask return examples def transform_images(examples): images = [read_image(image_file, mode=ImageReadMode.RGB) for image_file in examples[image_column]] examples["pixel_values"] = [image_transformations(image) for image in images] return examples def filter_corrupt_images(examples): """remove problematic images""" valid_images = [] for image_file in examples[image_column]: try: Image.open(image_file) valid_images.append(True) except Exception: valid_images.append(False) return valid_images if training_args.do_train: if "train" not in dataset: raise ValueError("--do_train requires a train dataset") train_dataset = dataset["train"] if data_args.max_train_samples is not None: max_train_samples = min(len(train_dataset), data_args.max_train_samples) train_dataset = train_dataset.select(range(max_train_samples)) train_dataset = train_dataset.filter( filter_corrupt_images, batched=True, num_proc=data_args.preprocessing_num_workers ) train_dataset = train_dataset.map( function=tokenize_captions, batched=True, remove_columns=[col for col in column_names if col != image_column], num_proc=data_args.preprocessing_num_workers, load_from_cache_file=not data_args.overwrite_cache, desc="Running tokenizer on train dataset", ) # Transform images on the fly as doing it on the whole dataset takes too much time. train_dataset.set_transform(transform_images) if training_args.do_eval: if "validation" not in dataset: raise ValueError("--do_eval requires a train validation") eval_dataset = dataset["validation"] if data_args.max_eval_samples is not None: max_eval_samples = min(len(eval_dataset), data_args.max_eval_samples) eval_dataset = eval_dataset.select(range(max_eval_samples)) eval_dataset = eval_dataset.filter( filter_corrupt_images, batched=True, num_proc=data_args.preprocessing_num_workers ) eval_dataset = eval_dataset.map( function=tokenize_captions, batched=True, num_proc=data_args.preprocessing_num_workers, remove_columns=[col for col in column_names if col != image_column], load_from_cache_file=not data_args.overwrite_cache, desc="Running tokenizer on validation dataset", ) # Transform images on the fly as doing it on the whole dataset takes too much time. eval_dataset.set_transform(transform_images) # 8. Initialize our trainer trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset if training_args.do_train else None, eval_dataset=eval_dataset if training_args.do_eval else None, data_collator=collate_fn, ) # 9. Training if training_args.do_train: checkpoint = None if training_args.resume_from_checkpoint is not None: checkpoint = training_args.resume_from_checkpoint train_result = trainer.train(resume_from_checkpoint=checkpoint) trainer.save_model() tokenizer.save_pretrained(training_args.output_dir) image_processor.save_pretrained(training_args.output_dir) trainer.log_metrics("train", train_result.metrics) trainer.save_metrics("train", train_result.metrics) trainer.save_state() # 10. Evaluation if training_args.do_eval: metrics = trainer.evaluate() trainer.log_metrics("eval", metrics) trainer.save_metrics("eval", metrics) # 11. Write Training Stats and push to hub. finetuned_from = model_args.model_name_or_path # If from a local directory, don't set `finetuned_from` as this is required to be a valid repo. id on the Hub. if os.path.isdir(finetuned_from): finetuned_from = None kwargs = {"finetuned_from": finetuned_from, "tasks": "contrastive-image-text-modeling"} if data_args.dataset_name is not None: kwargs["dataset_tags"] = data_args.dataset_name if data_args.dataset_config_name is not None: kwargs["dataset_args"] = data_args.dataset_config_name kwargs["dataset"] = f"{data_args.dataset_name} {data_args.dataset_config_name}" else: kwargs["dataset"] = data_args.dataset_name if training_args.push_to_hub: trainer.push_to_hub(**kwargs) else: trainer.create_model_card(**kwargs) if __name__ == "__main__": main() 整体的代码分析讲解一下
12-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值