Package org.docx4j.model.datastorage
Class BindingTraverserXSLT
java.lang.Object
org.docx4j.model.datastorage.BindingTraverserCommonImpl
org.docx4j.model.datastorage.BindingTraverserXSLT
- All Implemented Interfaces:
BindingTraverserInterface
public class BindingTraverserXSLT extends BindingTraverserCommonImpl
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BindingTraverserXSLT.BookmarkCounter
Workaround for the fact that Xalan doesn't let us pass an AtomicInteger into an extension function. -
Field Summary
Fields Modifier and Type Field Description static boolean
ENABLE_XPATH_CACHE
-
Constructor Summary
Constructors Constructor Description BindingTraverserXSLT()
-
Method Summary
Modifier and Type Method Description static org.w3c.dom.DocumentFragment
convertFlatOPC(WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String sdtParent, java.lang.String contentChild, org.w3c.dom.traversal.NodeIterator rPrNodeIt, java.lang.String tag)
Convert the FlatOPC into an AltChunk, which Xalan can insert into XSLT output.static org.w3c.dom.DocumentFragment
convertXHTML(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, java.util.Map<java.lang.String,java.lang.Integer> sequenceCounters, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)
Convert the input XHTML into a WordML w3c DocumentFragment, which Xalan can insert into XSLT output.static org.w3c.dom.DocumentFragment
convertXHTMLtoAltChunk(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, java.util.Map<java.lang.String,java.lang.Integer> sequenceCounters, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)
Convert the input XHTML into an altChunk, which you'll rely on Word to convert to real Word content.protected static org.w3c.dom.DocumentFragment
createPlaceholder(RPr rPr)
Calling code should set w:sdtPr/w:showingPlaceholder (ie bind.xslt), so RemovalHandler can do the right thing for Quantifier.ALL_BUT_PLACEHOLDERS case.protected static org.w3c.dom.DocumentFragment
createPlaceholder(RPr rPr, java.lang.String sdtParent)
Used from convertXHTML, since bind.xslt leaves it to extension function to insert correct element structure.static java.lang.String
getRepeatPositionCondition(java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String odTag)
static java.lang.Boolean
importXHTMLMissing()
static void
log(org.docx4j.org.apache.xalan.extensions.ExpressionContext expressionContext, java.lang.String message)
static void
log(org.w3c.dom.traversal.NodeIterator nodeIterator)
Deprecated.static void
logXml(org.w3c.dom.traversal.NodeIterator nodeIterator)
static org.w3c.dom.DocumentFragment
nullResultParagraph(java.lang.String sdtParent, java.lang.String message)
void
setDomToXPathMap(DomToXPathMap domToXPathMap)
java.lang.Object
traverseToBind(JaxbXmlPart part, OpcPackage pkg, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap)
static org.w3c.dom.DocumentFragment
w14Checkbox(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild)
Support for w14 checkbox.static java.lang.String
w14CheckboxAttr(java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt)
Set w14:checked correctlystatic org.w3c.dom.DocumentFragment
xpathDate(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, org.w3c.dom.traversal.NodeIterator dateNodeIt)
static org.w3c.dom.DocumentFragment
xpathGenerateRuns(java.util.Map<java.lang.String,java.lang.String> pathMap, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, SdtPr sdtPr, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)
static org.w3c.dom.DocumentFragment
xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)
bind.xslt calls this, for case where 'od:xpath' is not presentstatic org.w3c.dom.DocumentFragment
xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)
bind.xslt calls this, for case where 'od:xpath' is presentstatic org.w3c.dom.DocumentFragment
xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, java.lang.String sdtParent, java.lang.String contentChild, java.lang.String cx, java.lang.String cy)
static org.w3c.dom.DocumentFragment
xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String odTag, java.lang.String sdtParent, java.lang.String contentChild)
static java.lang.String
xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings)
Pass back to XSLT, the value of w:blip/@r:embed, preserving everything else about the existing template image.static java.lang.String
xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String tag)
Process a rich text control containing an image.Methods inherited from class org.docx4j.model.datastorage.BindingTraverserCommonImpl
getNextBookmarkId, setStartingIdForNewBookmarks
-
Field Details
-
ENABLE_XPATH_CACHE
public static boolean ENABLE_XPATH_CACHE
-
-
Constructor Details
-
BindingTraverserXSLT
public BindingTraverserXSLT()
-
-
Method Details
-
setDomToXPathMap
-
traverseToBind
public java.lang.Object traverseToBind(JaxbXmlPart part, OpcPackage pkg, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap) throws Docx4JException- Specified by:
traverseToBind
in interfaceBindingTraverserInterface
- Specified by:
traverseToBind
in classBindingTraverserCommonImpl
- Parameters:
part
-pkg
-doc
-xPathsPart
-- Throws:
Docx4JException
-
log
public static void log(org.docx4j.org.apache.xalan.extensions.ExpressionContext expressionContext, java.lang.String message) -
log
public static void log(org.w3c.dom.traversal.NodeIterator nodeIterator)Deprecated.- Parameters:
nodeIterator
-
-
logXml
public static void logXml(org.w3c.dom.traversal.NodeIterator nodeIterator) -
createPlaceholder
protected static org.w3c.dom.DocumentFragment createPlaceholder(RPr rPr) throws java.lang.ExceptionCalling code should set w:sdtPr/w:showingPlaceholder (ie bind.xslt), so RemovalHandler can do the right thing for Quantifier.ALL_BUT_PLACEHOLDERS case. bind.xslt inserts the correct element structure for a simple bind, so all we do here is return the w:r element.- Parameters:
rPr
-sdtParent
-- Returns:
- Throws:
java.lang.Exception
-
createPlaceholder
protected static org.w3c.dom.DocumentFragment createPlaceholder(RPr rPr, java.lang.String sdtParent) throws java.lang.ExceptionUsed from convertXHTML, since bind.xslt leaves it to extension function to insert correct element structure.- Parameters:
rPr
-sdtParent
-- Returns:
- Throws:
java.lang.Exception
-
importXHTMLMissing
public static java.lang.Boolean importXHTMLMissing()- Returns:
- Since:
- 8.2.1
-
convertXHTMLtoAltChunk
public static org.w3c.dom.DocumentFragment convertXHTMLtoAltChunk(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, java.util.Map<java.lang.String,java.lang.Integer> sequenceCounters, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)Convert the input XHTML into an altChunk, which you'll rely on Word to convert to real Word content. Note that the input XHTML must be suitable for the context ie you can't insert block level stuff (eg p) into a run level sdt. For Word to be happy, you'll need to be binding something like: <html><head><title>Import me</title></head><body><p>Hello World!</p></body></html> rather than eg <p>Hello World!</p>- Since:
- 8.2.1
-
convertXHTML
public static org.w3c.dom.DocumentFragment convertXHTML(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, java.util.Map<java.lang.String,java.lang.Integer> sequenceCounters, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)Convert the input XHTML into a WordML w3c DocumentFragment, which Xalan can insert into XSLT output. Note that the input XHTML must be suitable for the context ie you can't insert block level stuff (eg p) into a run level sdt. This method requires docx4j-XHTMLImport.jar (LGPL) and its dependencies in order to function. -
xpathGenerateRuns
public static org.w3c.dom.DocumentFragment xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)bind.xslt calls this, for case where 'od:xpath' is present -
xpathGenerateRuns
public static org.w3c.dom.DocumentFragment xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter)bind.xslt calls this, for case where 'od:xpath' is not present -
xpathGenerateRuns
public static org.w3c.dom.DocumentFragment xpathGenerateRuns(java.util.Map<java.lang.String,java.lang.String> pathMap, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, SdtPr sdtPr, java.lang.String sdtParent, java.lang.String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) -
xpathInjectImage
public static org.w3c.dom.DocumentFragment xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String odTag, java.lang.String sdtParent, java.lang.String contentChild)- Parameters:
wmlPackage
-sourcePart
-customXmlDataStorageParts
-xpathsMap
-odTag
-sdtParent
-contentChild
-cx
-cy
-- Returns:
- Since:
- 11.1.8
-
xpathInjectImage
public static org.w3c.dom.DocumentFragment xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings, java.lang.String sdtParent, java.lang.String contentChild, java.lang.String cx, java.lang.String cy) -
xpathInjectImageRelId
public static java.lang.String xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String tag)Process a rich text control containing an image.- Parameters:
wmlPackage
-sourcePart
-customXmlDataStorageParts
-xPathsPart
-tag
-- Returns:
- Since:
- 3.0.1
-
xpathInjectImageRelId
public static java.lang.String xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlDataStoragePart> customXmlDataStorageParts, java.lang.String storeItemId, java.lang.String xpath, java.lang.String prefixMappings)Pass back to XSLT, the value of w:blip/@r:embed, preserving everything else about the existing template image.- Parameters:
wmlPackage
-sourcePart
-customXmlDataStorageParts
-storeItemId
-xpath
-prefixMappings
-- Returns:
- Since:
- 3.0.0
-
getRepeatPositionCondition
public static java.lang.String getRepeatPositionCondition(java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String odTag) -
nullResultParagraph
public static org.w3c.dom.DocumentFragment nullResultParagraph(java.lang.String sdtParent, java.lang.String message) -
xpathDate
public static org.w3c.dom.DocumentFragment xpathDate(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild, org.w3c.dom.traversal.NodeIterator dateNodeIt) -
convertFlatOPC
public static org.w3c.dom.DocumentFragment convertFlatOPC(WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, java.util.Map<java.lang.String,Xpaths.Xpath> xpathsMap, java.lang.String sdtParent, java.lang.String contentChild, org.w3c.dom.traversal.NodeIterator rPrNodeIt, java.lang.String tag)Convert the FlatOPC into an AltChunk, which Xalan can insert into XSLT output.- Since:
- 3.0.1
-
w14Checkbox
public static org.w3c.dom.DocumentFragment w14Checkbox(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, java.lang.String sdtParent, java.lang.String contentChild)Support for w14 checkbox.- Since:
- 3.2.2
-
w14CheckboxAttr
public static java.lang.String w14CheckboxAttr(java.util.Map<java.lang.String,CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt)Set w14:checked correctly- Since:
- 6.0.0
-