Improve fopxconf info
diff --git a/content/fop/trunk/fopxconf.mdtext b/content/fop/trunk/fopxconf.mdtext
index b033163..670e960 100644
--- a/content/fop/trunk/fopxconf.mdtext
+++ b/content/fop/trunk/fopxconf.mdtext
@@ -4,151 +4,148 @@
 
 ### [FopConfParser](configuration.html)
 
-- accessibility element boolean
-- base element
-- break-indent-inheritance element boolean
-- class attribute
-- complex-scripts element
-- country attribute
-- default-page-settings element
-- disabled attribute boolean
-- extension attribute
-- height attribute
-- hyp
-- hyphenation-base element
-- hyphenation-pattern element
-- image-loading element
-- lang attribute
-- penalty element
-- prefer-renderer
-- simple-line-breaking
-- source-resolution element float
-- strict-configuration element boolean
-- strict-validation element boolean
-- table-border-overpaint
-- target-resolution element float
-- value attribute
-- width attribute
-- xml
+- <prefer-renderer>true/false</prefer-renderer>
+- <table-border-overpaint>true/false</table-border-overpaint>
+- <simple-line-breaking>true/false</simple-line-breaking>
+- <skip-page-position-only-allowed>true/false</skip-page-position-only-allowed>
+- <strict-validation>true/false</strict-validation>
+- <strict-configuration>true/false</strict-configuration>
+- <accessibility>true/false</accessibility>
+- <base/>
+- <source-resolution>float</source-resolution>
+- <target-resolution>float</target-resolution>
+- <break-indent-inheritance>true/false</break-indent-inheritance>
+- <default-page-settings/>
+- height=string
+- width=string
+- <complex-scripts/>
+- disabled=true/false
+- <image-loading/>
+- <hyphenation-base/>
+- <hyphenation-pattern/>
+- lang=string
+- country=string
+- extension=string
+- xml=string
+- hyp=string
+- <penalty/>
+- class=string
+- value=string
 
 ### [DefaultFontConfig](fonts.html#bulk)
 
-- advanced attribute boolean
-- auto-detect element
-- directory element
-- embed-as-type1 attribute boolean
-- embed-url attribute
-- embed-url-afm attribute
-- embed-url-pfm attribute
-- embedding-mode attribute
-- encoding-mode attribute
-- font element
-- font-family attribute
-- font-triplet element
-- fonts element
-- kerning attribute boolean
-- match element
-- metrics-url attribute
-- mime attribute
-- name attribute
-- recursive attribute boolean
-- referenced-fonts element
-- simulate-style
-- style attribute
-- sub-font attribute
-- svg attribute boolean
-- weight attribute
-
-### [PDFEncryptionOption](pdfencryption.html#embedded)
-
-- encrypt-metadata default: true
-- encryption-length
-- encryption-params
-- noaccesscontent default: false
-- noannotations default: false
-- noassembledoc default: false
-- nocopy default: false
-- noedit default: false
-- nofillinforms default: false
-- noprint default: false
-- noprinthq
-- owner-password
-- user-password
-
-### [PDFRendererOption](pdfa.html#fop-xconf)
-
-- disable-srgb-colorspace default: false
-- form-xobject default: false
-- linearization default: false
-- merge-fonts default: false
-- output-profile
-- pdf-a-mode
-- pdf-ua-mode
-- pdf-vt-mode
-- pdf-x-mode
-- version
+- <fonts/>
+- <auto-detect/>
+- <font/>
+- embed-url=string
+- metrics-url=string
+- embed-url-afm=string
+- embed-url-pfm=string
+- sub-font=string
+- kerning=true/false
+- advanced=true/false
+- encoding-mode=string
+- embedding-mode=string
+- simulate-style=true/false
+- embed-as-type1=true/false
+- svg=true/false
+- <font-triplet/>
+- mime=string
+- <referenced-fonts/>
+- <match/>
+- font-family=string
+- <directory/>
+- recursive=true/false
+- name=string
+- weight=string
+- style=string
 
 ### [AFPRendererOption](output.html#afp-configuration)
 
-- allow-embedding boolean
-- bitmap-encoding-quality float
-- default-resource-levels
-- dithering-quality float
-- fs45 boolean
-- goca boolean
-- images
-- jpeg
-- line-width-correction float
-- mapping_option
-- mode boolean
-- native boolean
-- pseg boolean
-- renderer-resolution integer
-- resource-group-file
-- shading
-- text boolean
-
-### [PSRendererOption](output.html#ps-configuration)
-
-- acrobat-downsample default: false
-- auto-rotate-landscape default: false
-- dsc-compliant default: true
-- language-level
-- optimize-resources default: false
-- rendering
-- safe-set-page-device default: false
+- default-resource-levels=string
+- images=string
+- jpeg=string
+- dithering-quality=float
+- fs45=true/false
+- mapping_option=string
+- mode=true/false
+- native=true/false
+- pseg=true/false
+- allow-embedding=true/false
+- bitmap-encoding-quality=float
+- renderer-resolution=integer
+- resource-group-file=string
+- shading=string
+- line-width-correction=float
+- goca=true/false
+- text=true/false
 
 ### [TxtRendererConfig](output.html#txt)
 
-- encoding
-
-### [PCLRendererOption](output.html#pcl-configuration)
-
-- color boolean
-- disable-pjl boolean
-- optimize-resources boolean
-- rendering
-- text-rendering boolean
-- transparent-page-background
-
-### [BitmapRendererOption](output.html#bitmap-configuration)
-
-- anti-aliasing default: true
-- background-color
-- bi-level
-- binary
-- color-mode
-- gray
-- quality default: true
-- rendering
-- rgb
-- rgba
-- speed
-- transparent-page-background default: false
+- encoding=string
 
 ### [TIFFRendererConfig](output.html#bitmap-configuration)
 
-- compression
-- endianness
-- single-strip boolean
+- compression=string
+- single-strip=true/false
+- endianness=string
+
+### [BitmapRendererOption](output.html#bitmap-configuration)
+
+- transparent-page-background=default: false
+- background-color=string
+- anti-aliasing=default: true
+- rendering=string
+- quality=default: true
+- speed=string
+- color-mode=string
+- rgba=string
+- rgb=string
+- gray=string
+- binary=string
+- bi-level=string
+
+### [PSRendererOption](output.html#ps-configuration)
+
+- auto-rotate-landscape=default: false
+- language-level=string
+- optimize-resources=true/false
+- safe-set-page-device=default: false
+- dsc-compliant=default: true
+- acrobat-downsample=default: false
+
+### [PDFEncryptionOption](pdfencryption.html#embedded)
+
+- encryption-length=string
+- noprinthq=string
+- noassembledoc=default: false
+- noaccesscontent=default: false
+- nofillinforms=default: false
+- noannotations=default: false
+- noprint=default: false
+- nocopy=default: false
+- noedit=default: false
+- user-password=string
+- owner-password=string
+- encrypt-metadata=default: true
+- encryption-params=string
+
+### [PDFRendererOption](pdfa.html#fop-xconf)
+
+- pdf-a-mode=string
+- pdf-ua-mode=string
+- pdf-x-mode=string
+- pdf-vt-mode=string
+- version=string
+- disable-srgb-colorspace=default: false
+- merge-fonts=default: false
+- linearization=default: false
+- form-xobject=default: false
+- output-profile=string
+
+### [PCLRendererOption](output.html#pcl-configuration)
+
+- text-rendering=true/false
+- disable-pjl=true/false
+- color=true/false
 
diff --git a/generatefopxconf.py b/generatefopxconf.py
new file mode 100644
index 0000000..f542593
--- /dev/null
+++ b/generatefopxconf.py
@@ -0,0 +1,124 @@
+import os
+import argparse
+
+parser = argparse.ArgumentParser()
+parser.add_argument('fop', help='fop dir')
+parser.add_argument('website', help='website dir')
+args = parser.parse_args()
+
+class Item:
+    def __init__(self, name, parent):
+        self.name = name
+        self.parent = parent.replace('.java', '')
+        self.element = False
+        self.attrtype = 'string'
+
+tags = []
+
+def getItem(parent, l):
+    tag = None
+    if '"' in l:
+        tag = l.split('"')[1]
+        if ' ' in tag or len(tag) < 2 or tag.lower() != tag or tag == 'true':
+            return None
+    elif '(' in l:
+        tag = l.split('(')[1].split(')')[0]
+        if '_' not in tag or ' ' in tag or '.' in tag:
+            return None
+        tag = tag.lower().replace('_', '-')
+    else:
+        return None
+    for item in tags:
+        if tag == item.name:
+            return item
+    item = Item(tag, parent)
+    tags.append(item)
+    return item
+
+for root, _, files in os.walk(args.fop):
+    for name in files:
+        if name.endswith('.java'):
+            fn = os.path.join(root, name)
+            f = open(fn)
+            
+            if name == 'Java2DRendererOption.java':
+                name = 'PCLRendererOption.java'
+            check = name in ['FopConfParser.java', 'DefaultFontConfig.java'] 
+            for l in f:
+                l = l.strip()
+                if 'implements RendererConfigOption' in l:
+                    check = True
+                if check:
+                    item = getItem(name, l)
+                    if item:
+                        if 'getChild' in l:
+                            item.element = True
+                        if 'Boolean' in l:
+                            item.attrtype = 'true/false'
+                        if 'Integer' in l:
+                            item.attrtype = 'integer'
+                        if 'Float' in l:
+                            item.attrtype = 'float'
+                        if 'Option' in name:
+                            if 'true' in l:
+                                item.attrtype = 'default: true'
+                            if 'false' in l:
+                                item.attrtype = 'default: false'       
+            f.close()
+            
+def check(fn):
+    f = open(fn)
+    for l in f:
+        for tag in list(tags):
+            if ('<' + tag + ' ') in l or ('"' + tag + '"') in l or (' ' + tag + ' ') in l or ('<' + tag + '>') in l or (' ' + tag + '=') in l or ('<' + tag + '/') in l :
+                tags.remove(tag)
+    f.close()
+            
+for root, _, files in os.walk(args.website + '/content/fop/trunk'):
+    for name in files:
+        if name.endswith('.mdtext'):
+            fn = os.path.join(root, name)
+            #check(fn)
+#check(home + '/xmlgraphics-website/content/fop/fop-pdf-images.mdtext')
+
+print('Title: Apache(tm) FOP: Config Options\n')
+print('#Apache&trade; FOP: Config Options\n')
+
+links = {
+'FopConfParser':'configuration.html',
+'DefaultFontConfig': 'fonts.html#bulk',
+'PDFEncryptionOption': 'pdfencryption.html#embedded',
+'PDFRendererOption': 'pdfa.html#fop-xconf',
+'AFPRendererOption': 'output.html#afp-configuration',
+'PSRendererOption': 'output.html#ps-configuration',
+'TxtRendererConfig': 'output.html#txt',
+'PCLRendererOption': 'output.html#pcl-configuration',
+'BitmapRendererOption': 'output.html#bitmap-configuration',
+'TIFFRendererConfig': 'output.html#bitmap-configuration',
+}
+
+def printtags(tag):
+    if tag.element:
+        if tag.attrtype != 'string':
+            print('- &lt;' + tag.name + '&gt;' + tag.attrtype + '&lt;/' + tag.name + '&gt;')
+        else:
+            print('- &lt;' + tag.name + '/&gt;')
+    else:
+        print('- ' + tag.name + '=' + tag.attrtype)
+    
+seen = []
+    
+def printGroup(parent):
+    if parent not in seen:
+        print('### [' + parent + '](' + links[parent] + ')\n')
+        for tag in tags:
+            if tag.parent == parent:
+                printtags(tag)
+        print('')
+        seen.append(parent)
+
+printGroup('FopConfParser')
+printGroup('DefaultFontConfig')
+for tag in tags:
+    printGroup(tag.parent)
+    
\ No newline at end of file