SlideShare a Scribd company logo
1 of 78
Download to read offline
W3C XML Schema
Patterns for Databinding

                Paul Downey, BT
Chair, XML Schema Patterns for Databinding Working Group

              XML 2006, December 5th 2006
XML Schema



    ?
Validation

             XML
            Schema




                         Post
  XML       Schema      Schema
Instance               Validation
           Processor    Infoset
Description
          XML
         Schema




           XML
Sender   Instance
                    Receiver
Types

          xs:string
          xs:int
XML
          tns:Address
          foo:PurchaseOrder
Databinding



    ?
Databinding
    Abstraction


Model        XML
Model
• Java
• Database
• Annotated DOM
• JSON
• PHP serialisation
• XML
• Whatever
Why Describe



    ?
Duck Typing XML



      ?
Force Array

<opt>                     {
    <name>value</name>        name => ‘value’
</opt>                    }



                          {
<opt>                         name => [
    <name>value1</name>              ‘value1’,
    <name>value2</name>              ‘value2’
</opt>                        ]
                          }
Static Typing

{
    int accountNo;
    long ammount;
    string name;
}
What’s wrong with
  Databinding



       ?
“State of the Art”

•   reject valid XML Schema documents

•   reject valid XML instance documents

•   content of valid XML instance documents
      often unavailable in model
Impedance
 Mismatch

  ><
  OO
Circles, Triangles,
        Rectangles


       XML 2003
http://www.idealliance.org/papers/dx_xml03/papers/06-02-01/06-02-01.html
I ! Mixed Content

text <O/> text
<O> text </O>
Don’t Databind?
• XSLT
• DOM
• LINQ
• E4X
• XJ
• etc
Abstraction Scale

Objects   Infoset         XML     Bits




      Typed    DOM               Text
      DOM
                    Templating
They Don’t Like
    XML!
Abstraction



    ?
XML Schema
        is Big ..

• Lot’s of ways to describe the concrete
• Lot’s of ways to represent the abstract
Partial
Implementations

“Our tool doesn’t support xs:foo.
     Change your schema.”

              * vendor
So begins ..



“The Barf Dance”
it’s not so much that
    schema sucks ...
or that databinding tools
         suck ...
it’s that all databinding tools
               suck

        differently
W3C
Working Group



     ?
WS-I


• Basic Profile
• XML Schema Work Plan Working Group
W3C Workshop
XML Schema 1.0 User Experiences
Discussion
Don’t Just Change
    Schema!
       … 300,000+ developers use XSD
       … There is tremendous value in
       XML Schema. Don't just change it…


           Soumitra Sengupta,
           Microsoft
Discussion Topics

•   versioning
•   profiles and patterns of use
•   code generation (v) validation
•   Unique Particle Attribution (UPA)
•   XML Schema 1.1
•   test suite
W3C XML Schema
Patterns for Databinding
    Working Group



          !
Deliverables

• W3C Recommendation for Basic Patterns
• W3C Recommendation for Advanced Patterns
• Test Suite
• Mechanism to Detect patterns
Out of Scope:


• Profile of Schema
• Language Specific Detail
Patterns



   !
AnyURIElement
.//xs:element/@type[resolve-QName(.,..)
        = xs:QName('xs:anyURI')]




<xs:element name=quot;anyURIElementquot;
            type=quot;xs:anyURIquot; />


      http://www.w3.org/2002/ws/databinding/patterns/6/09/AnyURIElement
ElementMinOccurs0
MaxOccursUnbounded
 .//xs:element[@minOccurs = '0'
       and @maxOccurs = 'unbounded']/
         (@minOccurs, @maxOccurs)




http://www.w3.org/2002/ws/databinding/patterns/6/09/ElementMinOccurs0MaxOccursUnbounded
SequenceSingle
    RepeatedElement
.//xs:sequence[count(xs:element) = 1]/
    xs:element[@maxOccurs = 'unbounded']/
      (., @maxOccurs)


                          Overlapping!
http://www.w3.org/2002/ws/databinding/patterns/6/09/SequenceSingleRepeatedElement
StringEnumerationType
.//xs:simpleType/xs:restriction[
  @base/resolve-QName(.,..) = xs:QName('xs:string')
    and xs:enumeration]/
   (., @base, xs:enumeration/(., @value))


  <xs:simpleType name=quot;Beatlequot;>
    <xs:restriction base=quot;xs:stringquot;>
      <xs:enumeration value=quot;Johnquot; />
      <xs:enumeration value=quot;Paulquot; />
      <xs:enumeration value=quot;Georgequot; />
      <xs:enumeration value=quot;Ringoquot; />
    </xs:restriction>


    http://www.w3.org/2002/ws/databinding/patterns/6/09/StringEnumerationType
SOAP Encoded Array
./xs:complexType[@name]/xs:complexContent/
    xs:restriction[
      @base/resolve-QName(.,..)
        = xs:QName ('soap11enc:Array')]/
      xs:attribute[(@ref/resolve-QName(.,..)
        = xs:QName('soap11enc:arrayType'))
      and @wsdl11:arrayType]/
(../.., ../(., @base), ., @ref, @wsdl11:arrayType)


     http://www.w3.org/2002/ws/databinding/patterns/6/09/SOAPEncodedArray
Palatability



    ?
Value Judgement

• xs:any becomes XMLElement
• xs:anyURI becomes String
• xs:decimal becomes String
Examples



   !
ElementMinOccurs0
MaxOccursUnbounded
   <xs:element name=quot;durationListquot; type=quot;ex:DurationListquot; />
   <xs:complexType name=quot;DurationListquot;>
    <xs:sequence>
      <xs:element name=quot;durationValuequot; type=quot;xs:shortquot;
   ! ! ! ! ! minOccurs=quot;0quot; maxOccurs=quot;unboundedquot; />
    </xs:sequence>
   </xs:complexType>


http://www.w3.org/2002/ws/databinding/examples/6/09/ElementMinOccurs0MaxOccursUnbounded
Example
          Descriptions

•   ComplexTypeSequenceExtension.xsd
•   echoComplexTypeSequenceExtension.xsd
•   echoComplexTypeSequenceExtension.wsdl
•   echoComplexTypeSequenceExtension-wsdl20.wsdl
Example
               Instances

•   ElementMinOccurs0MaxOccursUnbounded-01.xml

•   echoElementMinOccurs0MaxOccursUnbounded-01.xml

•   echoElementMinOccurs0MaxOccursUnbounded-01-soap11.xml

•   echoElementMinOccurs0MaxOccursUnbounded-01-soap12.xml
Test Suite
            Example
           Description




Instance


                         Model
            Toolkit


Output
Test
Reports
Patterns Detector



       !
Patterns Detector


 XML                Patterns
Schema
         Detector    (URIs)
Buckets



  !
Basic Patterns

• known to work with “state of the art”
  implementations
• they’re, um, very Basic


      Publishers of Schemas Take Note!
TargetNamespace
      .[@targetNamespace]/
                 (., @targetNamespace)



An [XML Schema 1.0] document conforming to this
specification MUST define a targetNamespace whose
value is an absolute URI. †
        http://www.w3.org/2002/ws/databinding/patterns/6/09/TargetNamespace
“State of the Art”



       ?
SLIPPERY
 SLOPE
Value Judgement
 • new tools arrive
 • old tools become defunct
 • some tools are very lame
 • we can’t test every tool

“Bring out your implementations”
Advanced Patterns

• exhibited by real schemata
• they’re, um, not very interoperable


 Developers of Implementations Take Note!
Not Advanced



    ?
SLIPPERY
 SLOPE
Value Judgement

• XML Schema is big
• Coverage or Possible to Databind?
• always another Schema

  “Bring out your schemata”
Patterns in the
     Wild
Build Your Own
       Bucket

• List Patterns your schemas use
• List Patterns your toolkit supports
• Analyse schemas “in the wild”
Other Topics



    ?
Document
 Conformance

Implementation
 Conformance
WS-I Basic Profile


• Detector works on WSDL 1.1
• Composable with Basic Profile 1.1
Annotations


• Tools Generate them
• Useful for “round tripping”
• No-one is submitting them
Versioning

• Concrete patterns exist
• They’re all Advanced


      XML Schema 1.1 is the answer?
Progress



  ?
Schedule
Participants
•   BT

•   Health Level 7

•   National Association of Convenience Stores (NACS)

•   Origo Services Limited

•   SAP AG

•   WSO2

•   Invited Expert: Priscilla Walmsley


               ... and that’s It!
We Need Your
   Help!




www.w3.org/2002/ws/databinding
How You Can Help

• Participate in the Working Group
• Encourage your vendor of choice to participate
• Contribute to the test suite
• Contribute your Schemata

     www.w3.org/2002/ws/databinding
Thank you!
Any Questions



            ?
www.w3.org/2002/ws/databinding

More Related Content

What's hot

JavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQueryJavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQuery
Jamshid Hashimi
 
javascript
javascript javascript
javascript
Kaya Ota
 
introduction to javascript
introduction to javascriptintroduction to javascript
introduction to javascript
Kumar
 

What's hot (20)

Querring xml with xpath
Querring xml with xpath Querring xml with xpath
Querring xml with xpath
 
C# Advanced L03-XML+LINQ to XML
C# Advanced L03-XML+LINQ to XMLC# Advanced L03-XML+LINQ to XML
C# Advanced L03-XML+LINQ to XML
 
JavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQueryJavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQuery
 
Java XML Parsing
Java XML ParsingJava XML Parsing
Java XML Parsing
 
Javascript
JavascriptJavascript
Javascript
 
Lecture 5 javascript
Lecture 5 javascriptLecture 5 javascript
Lecture 5 javascript
 
Java script
Java scriptJava script
Java script
 
Introduction to JavaScript Basics.
Introduction to JavaScript Basics.Introduction to JavaScript Basics.
Introduction to JavaScript Basics.
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
 
JSR-222 Java Architecture for XML Binding
JSR-222 Java Architecture for XML BindingJSR-222 Java Architecture for XML Binding
JSR-222 Java Architecture for XML Binding
 
javascript
javascript javascript
javascript
 
CSharp Advanced L05-Attributes+Reflection
CSharp Advanced L05-Attributes+ReflectionCSharp Advanced L05-Attributes+Reflection
CSharp Advanced L05-Attributes+Reflection
 
JavaScript - Chapter 4 - Types and Statements
 JavaScript - Chapter 4 - Types and Statements JavaScript - Chapter 4 - Types and Statements
JavaScript - Chapter 4 - Types and Statements
 
Java script
Java scriptJava script
Java script
 
Javascript
JavascriptJavascript
Javascript
 
Java script
Java scriptJava script
Java script
 
introduction to javascript
introduction to javascriptintroduction to javascript
introduction to javascript
 
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
 
Basic JavaScript Tutorial
Basic JavaScript TutorialBasic JavaScript Tutorial
Basic JavaScript Tutorial
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 

Viewers also liked (7)

Deawsj 7 ppt-1_a
Deawsj 7 ppt-1_aDeawsj 7 ppt-1_a
Deawsj 7 ppt-1_a
 
Attila_Hunics_IT
Attila_Hunics_ITAttila_Hunics_IT
Attila_Hunics_IT
 
Vb.net session 05
Vb.net session 05Vb.net session 05
Vb.net session 05
 
Ado.net
Ado.netAdo.net
Ado.net
 
Ado.net session02
Ado.net session02Ado.net session02
Ado.net session02
 
Patterns in Eclipse
Patterns in EclipsePatterns in Eclipse
Patterns in Eclipse
 
VISUAL BASIC .net data accesss vii
VISUAL BASIC .net data accesss viiVISUAL BASIC .net data accesss vii
VISUAL BASIC .net data accesss vii
 

Similar to XML Schema Patterns for Databinding

The Lumber Mill Xslt For Your Templates
The Lumber Mill   Xslt For Your TemplatesThe Lumber Mill   Xslt For Your Templates
The Lumber Mill Xslt For Your Templates
Thomas Weinert
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
Ted Leung
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
sbeam
 

Similar to XML Schema Patterns for Databinding (20)

Xml Demystified
Xml DemystifiedXml Demystified
Xml Demystified
 
The Lumber Mill Xslt For Your Templates
The Lumber Mill   Xslt For Your TemplatesThe Lumber Mill   Xslt For Your Templates
The Lumber Mill Xslt For Your Templates
 
Processing XML with Java
Processing XML with JavaProcessing XML with Java
Processing XML with Java
 
IBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons LearnedIBM Solutions '99 XML and Java: Lessons Learned
IBM Solutions '99 XML and Java: Lessons Learned
 
eXtensible Markup Language (XML)
eXtensible Markup Language (XML)eXtensible Markup Language (XML)
eXtensible Markup Language (XML)
 
Implementing the Genetic Algorithm in XSLT: PoC
Implementing the Genetic Algorithm in XSLT: PoCImplementing the Genetic Algorithm in XSLT: PoC
Implementing the Genetic Algorithm in XSLT: PoC
 
Mazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml ToolsMazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml Tools
 
Xml Overview
Xml OverviewXml Overview
Xml Overview
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Soap vs-rest
Soap vs-restSoap vs-rest
Soap vs-rest
 
Mashups with Drupal and QueryPath
Mashups with Drupal and QueryPathMashups with Drupal and QueryPath
Mashups with Drupal and QueryPath
 
Web servicesoverview
Web servicesoverviewWeb servicesoverview
Web servicesoverview
 
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
XMLDB Building Blocks And Best Practices - Oracle Open World 2008 - Marco Gra...
 
Wt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technologyWt unit 2 ppts client sied technology
Wt unit 2 ppts client sied technology
 
Wt unit 2 ppts client side technology
Wt unit 2 ppts client side technologyWt unit 2 ppts client side technology
Wt unit 2 ppts client side technology
 
JSON Viewer XPATH Workbook
JSON Viewer XPATH WorkbookJSON Viewer XPATH Workbook
JSON Viewer XPATH Workbook
 
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
Real World Experience With Oracle Xml Database 11g An Oracle Ace’s Perspectiv...
 
Service Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMixService Oriented Integration With ServiceMix
Service Oriented Integration With ServiceMix
 
Dax Declarative Api For Xml
Dax   Declarative Api For XmlDax   Declarative Api For Xml
Dax Declarative Api For Xml
 
No SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in RubyNo SQL, No problem - using MongoDB in Ruby
No SQL, No problem - using MongoDB in Ruby
 

More from Paul Downey

The Web Is Agreement Opentech2008
The Web Is Agreement   Opentech2008The Web Is Agreement   Opentech2008
The Web Is Agreement Opentech2008
Paul Downey
 
Open Source, Agile, Life-Style
Open Source, Agile, Life-StyleOpen Source, Agile, Life-Style
Open Source, Agile, Life-Style
Paul Downey
 
Extensibility And Versioning
Extensibility And VersioningExtensibility And Versioning
Extensibility And Versioning
Paul Downey
 

More from Paul Downey (18)

ODI Lunchtime Talk, Creating an open register – what it takes and why
ODI Lunchtime Talk, Creating an open register – what it takes and whyODI Lunchtime Talk, Creating an open register – what it takes and why
ODI Lunchtime Talk, Creating an open register – what it takes and why
 
Building systems with integrity
Building systems with integrityBuilding systems with integrity
Building systems with integrity
 
Registers
RegistersRegisters
Registers
 
Building systems with integrity
Building systems with integrityBuilding systems with integrity
Building systems with integrity
 
Standards are Great, but Standardisation is a Really Bad Idea
Standards are Great, but Standardisation is a Really Bad IdeaStandards are Great, but Standardisation is a Really Bad Idea
Standards are Great, but Standardisation is a Really Bad Idea
 
Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?Who am I? Who are you? Who is anybody?
Who am I? Who are you? Who is anybody?
 
Open Source Hardware at OTA11
Open Source Hardware at OTA11Open Source Hardware at OTA11
Open Source Hardware at OTA11
 
I spy
I spyI spy
I spy
 
ETSI Hell's Kitchen Debate, Nice 2009
ETSI Hell's Kitchen Debate, Nice 2009ETSI Hell's Kitchen Debate, Nice 2009
ETSI Hell's Kitchen Debate, Nice 2009
 
Denver
DenverDenver
Denver
 
The Best Web APIs are Web Sites
The Best Web APIs are Web SitesThe Best Web APIs are Web Sites
The Best Web APIs are Web Sites
 
Publishing Web Services Policies
Publishing Web Services PoliciesPublishing Web Services Policies
Publishing Web Services Policies
 
The Web Is Agreement Opentech2008
The Web Is Agreement   Opentech2008The Web Is Agreement   Opentech2008
The Web Is Agreement Opentech2008
 
Vrm Wedding
Vrm WeddingVrm Wedding
Vrm Wedding
 
Versioning XML and Open Source Tools
Versioning XML and Open Source ToolsVersioning XML and Open Source Tools
Versioning XML and Open Source Tools
 
Open Source, Agile, Life-Style
Open Source, Agile, Life-StyleOpen Source, Agile, Life-Style
Open Source, Agile, Life-Style
 
Extensibility And Versioning
Extensibility And VersioningExtensibility And Versioning
Extensibility And Versioning
 
Mashing up The Mobile
Mashing up The MobileMashing up The Mobile
Mashing up The Mobile
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

XML Schema Patterns for Databinding