The Smart Paste feature preserves certain style and structure information when copying content from some of the most common applications and pasting into frameworks (document types) that support Smart Paste in Oxygen XML Author Eclipse plugin. For other document types, the default behavior of the paste operation is to keep only the text content without the styling.
The style of the pasted content can be customized by editing an XSLT stylesheet for a particular document type (framework). The XSLT stylesheet must accept an XHTML flavor of the copied content as input, and transform it to the equivalent XML markup that is appropriate for the target document type of the paste operation.
Make sure the particular framework contains a folder named resources in the following path structure:
/frameworks/[Document Type]/resources
Create an XSLT file named xhtml2content.xsl and save it in the resources folder for the particular framework.
For example: /frameworks/[Document Type]/resources/xhtml2content.xsl
Result: When you paste content from external applications (such as a web browser or and Office document) to a document that is open in Author mode, and that matches the particular framework, the styling from the xhtml2content.xsl stylesheet will be applied on the clipboard contents.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="urn:hl7-org:v3"
exclude-result-prefixes="xsl xhtml">
<xsl:output method="xml" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="xhtml:b | xhtml:strong">
<content styleCode="bold" >
<xsl:apply-templates select="@* | node()"/>
</content>
</xsl:template>
<xsl:template match="*">
<xsl:apply-templates select="@* | node()"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>The following parameters can be used in your XSLT stylesheet for customizing the Smart Paste mechanism:
<!-- Options that control external paste
(automatic conversions when pasting HTML and URL flavors from the clipboard). -->
<pasteOptions>
<!-- True to check if the entire sequence of words which get pasted are
converted to the target vocabulary. If the check fails, the content
will be inserted as a simple sequence of words without any formatting. -->
<checkEntireContentIsFullyPreserved>true</checkEntireContentIsFullyPreserved>
</pasteOptions>