Scala DSL - Supported languages
===============================

Support for other languages inside the Scala DSL
routes is delivered through traits. The
`org.apache.camel.scala.dsl.languages` package currently offers traits
to support XPath. To use any given language, you can mix-in the trait
when creating your `RouteBuilder`.

You can use any of the supported Camel Languages in
the Scala DSL; see below for a couple of examples:

[[ScalaDSL-Supportedlanguages-Using]]
Using <<xpath-language,XPath>>
----------------------------

With the XPath trait, you have an additional method available on an
`Exchange` to do XPath queries against the message. Just look at this
Splitter example, where the `xpath` method is used in a
`Exchange ⇒ Any*` function literal

[source,java]
----------------------------------------------------------
"direct:b" ==> {
  as(classOf[Document])
  split(xpath("/persons/person")) {
    to("mock:b")
    to("mock:c")
  }
}
----------------------------------------------------------

[[ScalaDSL-Supportedlanguages-Using.1]]
Using <<jxpath-language,JXPath>>
------------------------------

With the `org.apache.camel.scala.dsl.languages.JXPath` trait, you can an
additional `jxpath` method on the `Exchange`. In the Recipient List
example below, JXPath is used for getting the next endpoint's name out
of the message body.

[source,java]
----------------------------------------------------------
"direct:c" ==> {
  to("mock:c")
  recipients(jxpath("./in/body/destination"))
}
----------------------------------------------------------
