Package org.docx4j.model.datastorage
Class BindingTraverserXSLT
java.lang.Object
org.docx4j.model.datastorage.BindingTraverserCommonImpl
org.docx4j.model.datastorage.BindingTraverserXSLT
- All Implemented Interfaces:
BindingTraverserInterface
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classWorkaround for the fact that Xalan doesn't let us pass an AtomicInteger into an extension function. -
Field Summary
FieldsFields inherited from class org.docx4j.model.datastorage.BindingTraverserCommonImpl
bookmarkId -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic DocumentFragmentconvertFlatOPC(WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, String sdtParent, String contentChild, org.w3c.dom.traversal.NodeIterator rPrNodeIt, String tag) Convert the FlatOPC into an AltChunk, which Xalan can insert into XSLT output.static DocumentFragmentconvertXHTML(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, Map<String, Integer> sequenceCounters, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) Convert the input XHTML into a WordML w3c DocumentFragment, which Xalan can insert into XSLT output.static DocumentFragmentconvertXHTMLtoAltChunk(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, Map<String, 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 DocumentFragmentcreatePlaceholder(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 DocumentFragmentcreatePlaceholder(RPr rPr, String sdtParent) Used from convertXHTML, since bind.xslt leaves it to extension function to insert correct element structure.static StringgetRepeatPositionCondition(Map<String, Xpaths.Xpath> xpathsMap, String odTag) static Booleanstatic voidstatic voidlog(org.w3c.dom.traversal.NodeIterator nodeIterator) Deprecated.static voidlogXml(org.w3c.dom.traversal.NodeIterator nodeIterator) static DocumentFragmentnullResultParagraph(String sdtParent, String message) voidsetDomToXPathMap(DomToXPathMap domToXPathMap) traverseToBind(JaxbXmlPart part, OpcPackage pkg, Map<String, Xpaths.Xpath> xpathsMap) static DocumentFragmentw14Checkbox(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild) Support for w14 checkbox.static Stringw14CheckboxAttr(Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt) Set w14:checked correctlystatic DocumentFragmentxpathDate(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, org.w3c.dom.traversal.NodeIterator dateNodeIt) static DocumentFragmentxpathGenerateRuns(Map<String, String> pathMap, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, SdtPr sdtPr, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) static DocumentFragmentxpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) bind.xslt calls this, for case where 'od:xpath' is not presentstatic DocumentFragmentxpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) bind.xslt calls this, for case where 'od:xpath' is presentstatic DocumentFragmentxpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, String sdtParent, String contentChild, String cx, String cy) static DocumentFragmentxpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, String odTag, String sdtParent, String contentChild) static StringxpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings) Pass back to XSLT, the value of w:blip/@r:embed, preserving everything else about the existing template image.static StringxpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, 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 Object traverseToBind(JaxbXmlPart part, OpcPackage pkg, Map<String, Xpaths.Xpath> xpathsMap) throws Docx4JException- Specified by:
traverseToBindin interfaceBindingTraverserInterface- Specified by:
traverseToBindin classBindingTraverserCommonImpl- Parameters:
part-pkg-doc-xPathsPart-- Throws:
Docx4JException
-
log
public static void log(org.docx4j.org.apache.xalan.extensions.ExpressionContext expressionContext, 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
Calling 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:
Exception
-
createPlaceholder
Used from convertXHTML, since bind.xslt leaves it to extension function to insert correct element structure.- Parameters:
rPr-sdtParent-- Returns:
- Throws:
Exception
-
importXHTMLMissing
- Returns:
- Since:
- 8.2.1
-
convertXHTMLtoAltChunk
public static DocumentFragment convertXHTMLtoAltChunk(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, Map<String, 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 DocumentFragment convertXHTML(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, Map<String, 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 DocumentFragment xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) bind.xslt calls this, for case where 'od:xpath' is present -
xpathGenerateRuns
public static DocumentFragment xpathGenerateRuns(BindingTraverserState bindingTraverserState, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) bind.xslt calls this, for case where 'od:xpath' is not present -
xpathGenerateRuns
public static DocumentFragment xpathGenerateRuns(Map<String, String> pathMap, WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, SdtPr sdtPr, String sdtParent, String contentChild, boolean multiLine, BindingTraverserXSLT.BookmarkCounter bookmarkCounter) -
xpathInjectImage
public static DocumentFragment xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, String odTag, String sdtParent, String contentChild) - Parameters:
wmlPackage-sourcePart-customXmlDataStorageParts-xpathsMap-odTag-sdtParent-contentChild-cx-cy-- Returns:
- Since:
- 11.1.8
-
xpathInjectImage
public static DocumentFragment xpathInjectImage(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, String storeItemId, String xpath, String prefixMappings, String sdtParent, String contentChild, String cx, String cy) -
xpathInjectImageRelId
public static String xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, String tag) Process a rich text control containing an image.- Parameters:
wmlPackage-sourcePart-customXmlDataStorageParts-xPathsPart-tag-- Returns:
- Since:
- 3.0.1
-
xpathInjectImageRelId
public static String xpathInjectImageRelId(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlDataStoragePart> customXmlDataStorageParts, String storeItemId, String xpath, 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
-
nullResultParagraph
-
xpathDate
public static DocumentFragment xpathDate(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild, org.w3c.dom.traversal.NodeIterator dateNodeIt) -
convertFlatOPC
public static DocumentFragment convertFlatOPC(WordprocessingMLPackage pkg, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Xpaths.Xpath> xpathsMap, String sdtParent, String contentChild, org.w3c.dom.traversal.NodeIterator rPrNodeIt, String tag) Convert the FlatOPC into an AltChunk, which Xalan can insert into XSLT output.- Since:
- 3.0.1
-
w14Checkbox
public static DocumentFragment w14Checkbox(WordprocessingMLPackage wmlPackage, JaxbXmlPart sourcePart, Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt, String sdtParent, String contentChild) Support for w14 checkbox.- Since:
- 3.2.2
-
w14CheckboxAttr
public static String w14CheckboxAttr(Map<String, CustomXmlPart> customXmlDataStorageParts, org.w3c.dom.traversal.NodeIterator sdtPrNodeIt) Set w14:checked correctly- Since:
- 6.0.0
-