ข้อผิดพลาด XML (XSL) ในการแปลง HTML เป็น PDF (Java)

ฉันใกล้จะเสร็จสิ้นกับโปรแกรมแปลง HTML เป็นรูปแบบ PDF แล้ว ปัญหาของฉันเฉพาะเจาะจงมากกว่าโปรแกรมนี้ ฉันมีไฟล์ XSL ที่ทำให้ฉันเสียใจเมื่อพยายามใช้กับโปรแกรมของฉัน

เมื่อใช้ javax.xml.transform.Transformer.transform(source, result) ฉันได้รับคำเตือนและข้อความแสดงข้อผิดพลาดต่อไปนี้เนื่องจาก XSL styleSheet ของฉัน:

คำเตือนคอมไพเลอร์: คุณลักษณะ 'leader-length' ด้านนอกขององค์ประกอบ
ข้อผิดพลาด: 'ข้อผิดพลาด (ตำแหน่งที่ไม่รู้จัก): fo:list-item ไม่ใช่องค์ประกอบลูกที่ถูกต้องของ fo:block'

สามารถดูไฟล์ XSL ที่เป็นปัญหาได้ที่นี่: http://webcoder.info/downloads/xhtml2fo.html

แนะนำโดยบทช่วยสอนนี้: https://blogs.oracle.com/chrisf/entry/converting_html_to_pdf_using< /ก>

ความช่วยเหลือเกี่ยวกับข้อความแสดงข้อผิดพลาดเหล่านี้มาจากไหนจะช่วยได้มาก! ฉันไม่คุ้นเคยกับไฟล์ XSL เลย

ขอบคุณมาก.

แก้ไข: ฉันคิดว่าเป็นไปได้ว่ามีอย่างอื่นผิดพลาด เมื่อใช้ไฟล์ XSL อื่นๆ ฉันจะได้รับ: "เอกสารว่างเปล่า (มีบางอย่างอาจผิดปกติกับสไตล์ชีต XSLT ของคุณ)" อย่างไรก็ตาม ฉันกำลังติดตามบทช่วยสอนของ Oracle เกือบจะเหมือนกับตัวอักษร เขามีข้อผิดพลาดในรหัสของเขาหรือไม่? (ภายในลิงค์ด้านบน)

แก้ไข 2: ฉันควรจะโพสต์สิ่งนี้ตั้งแต่แรก: http://webcoder.info/downloads/xhtml2fo.xsl

หากลิงก์นั้นใช้งานไม่ได้ ฉันจะวางโค้ดตรงนี้ ขอบคุณ!

แก้ไข 3: นี่คือ HTML บางส่วนที่ฉันพยายามใช้เป็นตัวอย่าง: http://docs.oracle.com/javase/1.4.2/docs/tooldocs/solaris/classpath.html


person BlackVegetable    schedule 22.05.2012    source แหล่งที่มา
comment
ข้อผิดพลาดที่เกิดขึ้นจริง (ไม่ใช่คำเตือน) คือข้อผิดพลาด XSL-FO รายการกำลังพยายามส่งออกในรูปแบบ fo:block คุณสามารถโพสต์ HTML อินพุตของคุณได้หรือไม่?   -  person Daniel Haley    schedule 22.05.2012
comment
ทั้งหมดยกเว้นหน้า HTML ที่ง่ายที่สุดกำลังมีปัญหากับรายการ ฉันต้องเปลี่ยนแปลงอะไรบ้างในไฟล์ XSL ดูเหมือนซับซ้อนมากและอยู่เหนือหัวของฉันเล็กน้อย   -  person BlackVegetable    schedule 23.05.2012
comment
ฉันไม่สามารถบอกได้ว่าต้องเปลี่ยนแปลงอะไรบ้างจนกว่าฉันจะสามารถสร้างข้อผิดพลาดซ้ำได้ classpath.html ใน EDIT3 ไม่ได้ใกล้เคียงกับรูปแบบที่ถูกต้องด้วยซ้ำ ดังนั้นจึงไม่สามารถถือเป็น XML ซึ่งเป็นสิ่งที่ XSLT จำเป็นต้องสามารถประมวลผลได้ คุณมีตัวอย่างอื่นที่ XSLT สามารถประมวลผลได้หรือไม่   -  person Daniel Haley    schedule 23.05.2012
comment
ภายในโค้ด ฉันใช้ HTMLCleaner (2.2) ซึ่งควรจะรับอินพุต HTML และทำความสะอาดให้เป็น XML ที่มีรูปแบบถูกต้อง ตอนนี้ตัวอย่างกำลังใช้เวอร์ชัน 2.1 ซึ่งอาจเป็นสาเหตุของข้อผิดพลาด แต่ฉันไม่พบว่าจะดาวน์โหลด 2.1 ได้ที่ไหน ฉันไม่คิดว่ามันจะใช้งานได้ในขณะนี้   -  person BlackVegetable    schedule 23.05.2012
comment
ฉันไม่สามารถช่วยได้โดยตรง แต่มีคำแนะนำที่ชัดเจนให้ตรวจสอบเทคโนโลยี CSS+XHTML เป็น PDF ในงานในอนาคตของคุณ โปรดดูที่ เหตุใดจึงต้องใช้ XSL -FO แทนที่จะเป็น CSS2 เพื่อแปลง HTML เป็น PDF ที่ดีหรือไม่ ฉันกำลังศึกษา XSL-FO และ CSS ตั้งแต่โพสต์นี้ และสรุปว่าในอนาคตอันใกล้นี้ CSS2 สำหรับสื่อเพจคือทางออกที่ดีที่สุดสำหรับไปป์ไลน์ XML-Publishing เครื่องมือ XML ทั้งหมด (ตั้งแต่เครื่องมือสำหรับผู้เขียนและบรรณาธิการไปจนถึงเครื่องมือการผลิตจำนวนมาก) เข้ากันได้กับมาตรฐาน XHTML และ CSS และมีเครื่องมือที่เชี่ยวชาญและผู้ร่วมงานจำนวนมาก   -  person Peter Krauss    schedule 26.07.2012


คำตอบ (1)


ในบรรทัดก่อน <fo:leader ... /> ไม่ควรมีเครื่องหมายทับ /

person Joop Eggen    schedule 22.05.2012
comment
รู้ไหม ฉันไม่เห็นบรรทัดที่มีเครื่องหมายทับอยู่ข้างหน้า ‹fo:leader (ฯลฯ...)› คุณช่วยบอกหมายเลขสำหรับบรรทัดนั้นให้ฉันหน่อยได้ไหม ขอบคุณสำหรับความช่วยเหลือของคุณ. - person BlackVegetable; 22.05.2012
comment
ค้นหา leader-length แล้วตามด้วยบรรทัดก่อนหน้า - person Joop Eggen; 22.05.2012
comment
นั่นจะแก้ไขคำเตือน แต่ไม่ใช่ข้อผิดพลาด ขอบคุณสำหรับความช่วยเหลือของคุณจนถึงตอนนี้ - person BlackVegetable; 22.05.2012
comment
โพสต์ XML ของคุณแล้วเราจะสามารถช่วยคุณได้ เพียงเพื่อความเข้าใจ: สไตล์ชีต XSLT ถูกเขียนโดยคนอื่นใช่ไหม - person Dabbler; 22.05.2012
comment
ถูกต้อง. แทนที่จะเกะกะคำถาม คุณจะไปตามลิงค์แรกที่ฉันโพสต์จะง่ายกว่าไหม มันนำไปสู่หน้า html ที่มี XML ฉันสามารถลบส่วนเล็กๆ และลบคำเตือนของผู้ปฏิบัติตามได้ แต่จะไม่ส่งผลกระทบต่อข้อผิดพลาดที่ทำให้โปรแกรมของฉันขัดข้อง - person BlackVegetable; 22.05.2012
comment
อืม คุณหมายถึงการแสดง XML ของหน้า HTML ที่ฉันใช้งานอยู่หรือเปล่า หากเป็นเช่นนั้น ฉันก็แค่ใช้เพจเก่าๆ แต่ฉันคิดว่าคุณหมายถึง XSL (ซึ่งเป็น XML ประเภทหนึ่ง) - person BlackVegetable; 22.05.2012
comment
ฉันหมายถึงอินพุต XML สำหรับการแปลง (ซึ่งฉันคิดว่าเป็น XHTML) ในทางเทคนิคแล้ว ปัญหาคือ list-item ต้องอยู่ภายใน list-block แต่ข้อผิดพลาดนั้นอาจเกิดจากข้อบกพร่องใน XSLT หรือ XHTML ของคุณ ดังนั้นฉันจึงต้องใช้ XHTML จริงเพื่อค้นหา - person Dabbler; 23.05.2012
comment
ฉันพยายามทำให้โค้ดนี้ใช้งานได้กับหน้า HTML ใดก็ได้ จนถึงตอนนี้ โดยพื้นฐานแล้วรหัสของฉันเหมือนกับรหัสในลิงก์ที่สองที่ฉันให้ไว้ทุกประการ หากคุณมีหน้าตัวอย่าง HTML (XHTML?) ที่คุณคิดว่าดีและง่ายต่อการลองใช้ ฉันยินดีอย่างยิ่งที่จะเห็นหน้าดังกล่าว ฉันสับสนมากกับโครงการนี้ - person BlackVegetable; 23.05.2012
comment
เอาล่ะ ตอนนี้ฉันรู้สึกโง่เขลา รหัสของฉัน (ของเขา) ใช้งานได้ แต่ไม่ใช่กับไฟล์ HTML ทุกไฟล์ ฉันจะทราบได้อย่างไรว่าไฟล์ HTML จะไม่ล้อเลียนกับเอกสาร XSL ของฉัน (และฉันจำเป็นต้องเปิดคำถามใหม่สำหรับเรื่องนี้หรือไม่) - person BlackVegetable; 23.05.2012
comment
ปัญหาเกิดขึ้นกับรายการ ดังนั้น XHTML ใด ๆ ที่ไม่มีรายการจะไม่มีปัญหานี้ แต่คุณจำเป็นต้องจัดเตรียม XHTML จริงๆ ลิงก์ที่คุณโพสต์ไม่มีข้อมูลใดๆ เห็นได้ชัดว่ามันถูกสร้างขึ้นแบบไดนามิกจาก HTML บางตัว แต่ HTML ก็ไม่แสดงเช่นกัน - person Dabbler; 23.05.2012
comment
ให้เราสนทนาต่อในการแชท - person Dabbler; 23.05.2012