DTD?

Posted by Worstje on Thu 17 Jan 2008 07:57 PM — 9 posts, 20,355 views.

Netherlands #0
Simply put, I'm wondering if there's an actual 'muclient' DTD file somewhere that I could load in some XML authoring tools I'm playing around with. I googled a bit but no insta-luck I'm afraid.

Reason I ask is that I'm trying to expand my view and all that, and using some files I'm familliar with is the quickest way to learn.
Australia Forum Administrator #1
Not that I am aware of. I haven't done one.

However judging by the site:

http://www.w3schools.com/dtd/dtd_intro.asp

It wouldn't be too hard to do. The format of MUSHclient world/plugin files is pretty simple.
Australia Forum Administrator #2
Can you name an XML authoring tool (preferably free) that I could test it with, if I did the DTD document?
Netherlands #3
I was toying around with the XMLSpy trial since it is said to be a really good tool. I can't really recommend anything else, simply because I've not done as much research. Just on a learning-spree here, heh.
USA #4
Fancy XML parsers like Xerces can check if a document conforms to a DTD, but IME Xerces is a beast to get working. :-/ It does extremely complex and fancy things, but that makes it quite complex to do simple things... oh well.
Australia Forum Administrator #5
Currently I have got this working, it is probably not complete.

Replace the line:


<!DOCTYPE muclient>


in your world file with this:


<!DOCTYPE muclient [
  <!ELEMENT muclient 
     (world|
     plugin|
     triggers|
     aliases|
     include|
     printing|
     timers|
     macros|
     variables|
     colours|
     keypad|
     comment|
     script)*>
     
 <!ELEMENT world (#PCDATA) >
 <!ELEMENT triggers (trigger)* >
 <!ELEMENT aliases (alias)* >
 <!ELEMENT timers (timer)* >
 <!ELEMENT macros (macro)* >
 <!ELEMENT variables (variable)* >
 <!ELEMENT colours (ansi|custom)* >
 <!ELEMENT keypad (key)* >
 <!ELEMENT printing (ansi)* >
 <!ELEMENT plugin EMPTY >
 <!ELEMENT include EMPTY >
 <!ELEMENT script (#PCDATA) >
 <!ELEMENT comment (#PCDATA) >

 <!ELEMENT trigger (send)?>

 <!ELEMENT alias (send)?>

 <!ELEMENT macro (send)?>
  
 <!ELEMENT timer (send)?>

 <!ELEMENT send (#PCDATA) >
 
 <!ELEMENT ansi (normal|bold)* >   
 <!ELEMENT normal (colour|style)* >
 <!ELEMENT bold (colour|style)* >
 <!ELEMENT colour EMPTY >
 <!ELEMENT custom (colour)* >
 <!ELEMENT style EMPTY >

 <!ELEMENT key (send)? >

 <!ATTLIST world
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  

   auto_log_file_name CDATA #IMPLIED  
   auto_say_override_prefix CDATA #IMPLIED  
   auto_say_string CDATA #IMPLIED  
   beep_sound CDATA #IMPLIED  
   chat_file_save_directory CDATA #IMPLIED  
   chat_name CDATA #IMPLIED  
   chat_message_prefix CDATA #IMPLIED  
   command_stack_character CDATA #IMPLIED  
   connect_text CDATA #IMPLIED  
   filter_aliases CDATA #IMPLIED  
   filter_timers CDATA #IMPLIED  
   filter_triggers CDATA #IMPLIED  
   filter_variables CDATA #IMPLIED  
   id CDATA #IMPLIED  
   input_font_name CDATA #IMPLIED  
   log_file_postamble CDATA #IMPLIED  
   log_file_preamble CDATA #IMPLIED  
   log_line_postamble_input CDATA #IMPLIED  
   log_line_postamble_notes CDATA #IMPLIED  
   log_line_postamble_output CDATA #IMPLIED  
   log_line_preamble_input CDATA #IMPLIED  
   log_line_preamble_notes CDATA #IMPLIED  
   log_line_preamble_output CDATA #IMPLIED  
   mapping_failure CDATA #IMPLIED  
   name CDATA #IMPLIED  
   new_activity_sound CDATA #IMPLIED  
   notes CDATA #IMPLIED  
   on_mxp_close_tag CDATA #IMPLIED  
   on_mxp_error CDATA #IMPLIED  
   on_mxp_open_tag CDATA #IMPLIED  
   on_mxp_set_variable CDATA #IMPLIED  
   on_mxp_start CDATA #IMPLIED  
   on_mxp_stop CDATA #IMPLIED  
   on_world_close CDATA #IMPLIED  
   on_world_save CDATA #IMPLIED  
   on_world_connect CDATA #IMPLIED  
   on_world_disconnect CDATA #IMPLIED  
   on_world_get_focus CDATA #IMPLIED  
   on_world_lose_focus CDATA #IMPLIED  
   on_world_open CDATA #IMPLIED  
   output_font_name CDATA #IMPLIED  
   password CDATA #IMPLIED  
   paste_line_postamble CDATA #IMPLIED  
   paste_line_preamble CDATA #IMPLIED  
   paste_postamble CDATA #IMPLIED  
   paste_preamble CDATA #IMPLIED  
   player CDATA #IMPLIED  
   proxy_password  CDATA #IMPLIED 
   proxy_server CDATA #IMPLIED  
   proxy_username CDATA #IMPLIED  
   recall_line_preamble CDATA #IMPLIED  
   script_editor CDATA #IMPLIED  
   script_filename CDATA #IMPLIED  
   script_language CDATA #IMPLIED  
   script_prefix CDATA #IMPLIED  
   send_to_world_file_postamble CDATA #IMPLIED  
   send_to_world_file_preamble CDATA #IMPLIED  
   send_to_world_line_postamble CDATA #IMPLIED  
   send_to_world_line_preamble CDATA #IMPLIED  
   site CDATA #IMPLIED  
   spam_message CDATA #IMPLIED  
   speed_walk_filler CDATA #IMPLIED  
   speed_walk_prefix CDATA #IMPLIED  
   tab_completion_defaults CDATA #IMPLIED  
   terminal_identification CDATA #IMPLIED  

   accept_chat_connections (y|n) "n"  
   alternative_inverse (y|n) "n"  
   alt_arrow_recalls_partial (y|n) "n"  
   always_record_command_history (y|n) "n"  
   arrows_change_history (y|n) "y"  
   arrow_keys_wrap (y|n) "n"  
   arrow_recalls_partial (y|n) "n"  
   autosay_exclude_macros (y|n) "n"  
   autosay_exclude_non_alpha (y|n) "n"  
   auto_allow_files (y|n) "n"  
   auto_allow_snooping (y|n) "n"  
   auto_copy_to_clipboard_in_html (y|n) "n"  
   auto_pause (y|n) "y"  
   auto_repeat (y|n) "n"  
   auto_wrap_window_width (y|n) "n"  
   carriage_return_clears_line (y|n) "n"  
   chat_foreground_colour CDATA "255"  
   chat_background_colour CDATA "0"  
   chat_max_lines_per_message CDATA "0"  
   chat_max_bytes_per_message CDATA "0"  
   chat_port CDATA "4050"  
   confirm_before_replacing_typing (y|n) "y"  
   confirm_on_paste (y|n) "y"  
   confirm_on_send (y|n) "y"  
   connect_method CDATA "0"  
   copy_selection_to_clipboard (y|n) "n"  
   convert_ga_to_newline (y|n) "n"  
   ctrl_n_goes_to_next_command (y|n) "n"  
   ctrl_p_goes_to_previous_command (y|n) "n"  
   ctrl_z_goes_to_end_of_buffer (y|n) "n"  
   custom_16_is_default_colour (y|n) "n"  
   detect_pueblo (y|n) "y"  
   disable_compression (y|n) "n"  
   display_my_input (y|n) "n"  
   double_click_inserts (y|n) "n"  
   double_click_sends (y|n) "n"  
   echo_colour CDATA "0"  
   echo_hyperlink_in_output_window (y|n) "y"  
   edit_script_with_notepad (y|n) "y"  
   enable_aliases (y|n) "y"  
   enable_auto_say (y|n) "n"  
   enable_beeps (y|n) "y"  
   enable_command_stack (y|n) "n"  
   enable_scripts (y|n) "y"  
   enable_spam_prevention (y|n) "n"  
   enable_speed_walk (y|n) "n"  
   enable_timers (y|n) "y"  
   enable_triggers (y|n) "y"  
   enable_trigger_sounds (y|n) "y"  
   escape_deletes_input (y|n) "n"  
   flash_taskbar_icon (y|n) "n"  
   history_lines CDATA "1000"  
   hyperlink_adds_to_command_history (y|n) "y"  
   hyperlink_colour CDATA "16744448"  
   ignore_chat_colours (y|n) "n"  
   ignore_mxp_colour_changes (y|n) "n"  
   indent_paras (y|n) "n"  
   input_background_colour CDATA "16777215"  
   input_font_height CDATA "12"  
   input_font_italic (y|n) "n"  
   input_font_weight CDATA "0"  
   input_font_charset CDATA "1"  
   input_text_colour CDATA "0"  
   keep_commands_on_same_line (y|n) "n"  
   keypad_enable (y|n) "y"  
   line_information (y|n) "y"  
   line_spacing CDATA "0"  
   log_html (y|n) "n"  
   log_input (y|n) "n"  
   log_in_colour (y|n) "n"  
   log_notes (y|n) "n"  
   log_output (y|n) "y"  
   log_raw (y|n) "n"  
   lower_case_tab_completion (y|n) "n"  
   map_failure_regexp (y|n) "n"  
   max_output_lines CDATA "5000"  
   mud_can_change_link_colour (y|n) "y"  
   mud_can_remove_underline (y|n) "n"  
   mud_can_change_options (y|n) "y"  
   mxp_debug_level CDATA "0"  
   naws (y|n) "n"  
   note_text_colour CDATA "4"  
   no_echo_off (y|n) "n"  
   output_font_height CDATA "12"  
   output_font_weight CDATA "0"  
   output_font_charset CDATA "1"  
   password_base64  (y|n) "n"       
   paste_commented_softcode (y|n) "n"  
   paste_delay CDATA "0"  
   paste_delay_per_lines CDATA "1"  
   paste_echo (y|n) "n"  
   pixel_offset CDATA "1"  
   port CDATA "4000"  
   proxy_password_base64  (y|n) "n"    
   proxy_port CDATA "1080"  
   proxy_type CDATA "0"  
   re_evaluate_auto_say (y|n) "n"  
   save_deleted_command (y|n) "n"  
   save_world_automatically (y|n) "n"  
   script_reload_option CDATA "0"  
   script_errors_to_output_window (y|n) "n"  
   send_echo (y|n) "n"  
   send_file_commented_softcode (y|n) "n"  
   send_file_delay CDATA "0"  
   send_file_delay_per_lines CDATA "1"  
   send_mxp_afk_response (y|n) "y"  
   show_bold (y|n) "n"  
   show_connect_disconnect (y|n) "y"  
   show_italic (y|n) "y"  
   show_underline (y|n) "y"  
   spam_line_count CDATA "20"  
   speed_walk_delay CDATA "0"  
   spell_check_on_send (y|n) "n"  
   start_paused (y|n) "n"  
   tab_completion_lines CDATA "200"  
   tab_completion_space (y|n) "n"  
   translate_backslash_sequences (y|n) "n"  
   translate_german (y|n) "n"  
   underline_hyperlinks (y|n) "y"  
   unpause_on_send (y|n) "y"  
   use_custom_link_colour (y|n) "y"  
   use_default_aliases (y|n) "n"  
   use_default_colours (y|n) "n"  
   use_default_input_font (y|n) "n"  
   use_default_macros (y|n) "n"  
   use_default_output_font (y|n) "n"  
   use_default_timers (y|n) "n"  
   use_default_triggers (y|n) "n"  
   use_mxp CDATA "0"  
   utf_8 (y|n) "n"  
   validate_incoming_chat_calls (y|n) "n"  
   warn_if_scripting_inactive (y|n) "y"  
   wrap (y|n) "y"  
   wrap_column CDATA "80"  
   write_world_name_to_log (y|n) "y"  
>
 
 <!ATTLIST triggers
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

 <!ATTLIST trigger
    back_colour CDATA "0"
    bold (y|n) "n" 
    clipboard_arg CDATA "0"
    colour_change_type CDATA "0"
    custom_colour CDATA "0" 
    enabled (y|n) "n" 
    expand_variables (y|n) "n" 
    group CDATA #IMPLIED 
    ignore_case (y|n) "n" 
    italic (y|n) "n" 
    keep_evaluating (y|n) "n" 
    lines_to_match CDATA "0"
    lowercase_wildcard (y|n) "n" 
    make_bold (y|n) "n"      
    make_italic (y|n) "n"   
    make_underline (y|n) "n" 
    match CDATA #REQUIRED
    match_back_colour (y|n) "n"
    match_bold (y|n) "n"       
    match_inverse (y|n) "n"    
    match_italic (y|n) "n"     
    match_text_colour (y|n) "n"
    match_underline (y|n) "n"  
    multi_line (y|n) "n" 
    name CDATA #IMPLIED
    omit_from_log (y|n) "n" 
    omit_from_output (y|n) "n" 
    one_shot (y|n) "n" 
    other_back_colour CDATA "0"
    other_text_colour CDATA "0" 
    regexp (y|n) "n" 
    repeat (y|n) "n" 
    script CDATA "" 
    send_to CDATA "0" 
    sequence CDATA "100" 
    sound CDATA "" 
    sound_if_inactive (y|n) "n" 
    text_colour CDATA "0"
    user CDATA "0"  
    variable CDATA "" 
 >
 

 <!ATTLIST aliases
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

  <!ATTLIST alias
    name CDATA #IMPLIED
    script  CDATA ""  
    match  CDATA #IMPLIED
    enabled  (y|n) "n" 
    echo_alias  (y|n) "n" 
    expand_variables  (y|n) "n" 
    group  CDATA #IMPLIED
    variable  CDATA "" 
    omit_from_command_history  (y|n) "n" 
    omit_from_log  (y|n) "n" 
    regexp  (y|n) "n" 
    send_to  CDATA "0" 
    omit_from_output  (y|n) "n" 
    menu  (y|n) "n" 
    ignore_case  (y|n) "n" 
    keep_evaluating  (y|n) "n" 
    sequence  CDATA "100"
    temporary  (y|n) "n" 
    user  CDATA "0" 

>

<!ATTLIST timers
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

<!ATTLIST timer
    name CDATA #IMPLIED
    script CDATA #IMPLIED
    enabled (y|n) "n"
    hour CDATA "0"
    minute CDATA "0"
    second CDATA "0"
    offset_hour CDATA "0"
    offset_minute CDATA "0"
    offset_second CDATA "0"
    send_to CDATA "0"
    temporary (y|n) "n"
    user CDATA "0"
    at_time (y|n) "n"
    group CDATA #IMPLIED
    variable CDATA #IMPLIED
    one_shot (y|n) "n"
    omit_from_output (y|n) "n"
    omit_from_log (y|n) "n"
    active_closed (y|n) "n"
>


<!ATTLIST macros
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

 <!ATTLIST macro
    name CDATA #REQUIRED
    type (replace|send_now|insert) #IMPLIED
 >

<!ATTLIST variables
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
> 

<!ATTLIST colours
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

<!ATTLIST colour
   seq CDATA #IMPLIED
   rgb CDATA #IMPLIED
   name CDATA #IMPLIED
   text CDATA #IMPLIED
   back CDATA #IMPLIED
>

<!ATTLIST keypad
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

<!ATTLIST key
   name CDATA #REQUIRED
>

<!ATTLIST printing
   muclient_version CDATA #IMPLIED
   world_file_version CDATA #IMPLIED  
   date_saved CDATA #IMPLIED  
>

<!ATTLIST style
   seq CDATA "1"
   bold (y|n) "n"
   italic (y|n) "n"
   underline (y|n) "n"
>

<!ATTLIST include
   name CDATA #REQUIRED
   plugin (y|n) "n"
>


] >



However MUSHclient currently objects if you have that in your world file. I will have to investigate this.
Australia Forum Administrator #6
I have been using this validator:

http://www.validome.org/xml/validate/
Australia Forum Administrator #7
MUSHclient does however support the PUBLIC and SYSTEM directives, I haven't got them all to merge together yet.

Something along these lines might work:


<!DOCTYPE muclient SYSTEM "muclient.dtd">


I am unsure about which directory would be looked in for this file.
Netherlands #8
That looks totally awesome, Nick. Thanks!

The only issue that remains now is that I have a lot of stuff you've added lately that I need to test and play with still, and that I lack time to actually do it. But in good time, heh. :D